数组的C++最大值使用递归问题
C++ max of an array using recursion issue
我有一个程序,它使用递归找到数组中最大的整数,但无论值是多少,它都会返回最后输入的数字,而不是最大的数字。我该怎么解决这个问题?
#include <iostream>
using namespace std;
int maximum(int digits[], int size, int largest, int i);
void main()
{
const int size = 3;
int digits[size];
int n = 0, x = 0;
for(int a = 0; a < size; a++)
{
cout << "Enter an integer <" << ++x << " out of " << size << ">: ";
cin >> digits[n];
}
cout << "nThe largest digit is, " << maximum(digits, size, 0, 0) << ", thank you!n";
cout << endl;
}
int maximum(int digits[], int size, int largest, int i)
{
if ( i < size )
{
if ( largest < digits[i])
largest = digits[i];
maximum( digits, size, largest, i + 1);
}
return largest;
}
首先在main()
中正确使用索引变量
for(int a = 0; a < size; a++)
{
cout << "Enter an integer <" << ++x << " out of " << size << ">: ";
cin >> digits[a];//-->Use the index varible correctly.
}
int maximum(int digits[], int size, int largest, int i)
{
if(i==size-1)
return digits[i]; //The base case is specified here.
if ( i < size )
{
int temp= maximum( digits, size, largest, i + 1);
if ( digits[i] < temp)
largest =temp;
else
largest=digits[i];
}
return largest;
}
请查看更改。仔细阅读代码。你会理解你的错误的。
在设计递归时,首先要考虑几件事——
基本条件。(这将停止递归)。
递归步骤。(您将在之前的计算基础上进行计算)
组合步骤-你必须组合它们(这个阶段的值和回避步骤的值)才能得到正确的答案。在某些情况下不需要此步骤。
应该是return maximum( digits, size, largest, i + 1);
活生生的例子。
int biggestOne(int integerArray[], int lengthOfArray, int max)
{
if (lengthOfArray==0) return max;
if (max < integerArray[lengthOfArray-1]) max = integerArray[lengthOfArray-1];
return biggestOne(integerArray,lengthOfArray-1,max);
}
int main()
{
int array[] = {7,2,9,10,1};
int arrSize = sizeof(array)/sizeof(array[0]); //returns length of the array
cout <<"Biggest number in the array: " << biggestOne(array,arrSize,0) << endl;
return 0;
}
相关文章:
- 到连接组件算法的问题(递归)
- 需要为 C++ 中的以下问题设计递归算法
- 棘手的按值传递和按引用递归问题传递
- C++删除/(递归)对象销毁问题
- 返回不停止函数,递归函数问题?(编程练习,动态规划,Levenshtein 回溯)
- 变分模板递归构造函数问题
- 跟踪递归函数时出现问题
- 我遇到了有关递归的堆栈问题
- 这个简单的 C++ 递归函数来反转字符串有什么问题?
- 优化递归问题以计算超级数字
- 红黑树插入 - 递归问题 - C++
- 递归问题(2D正交)
- 遍历目录递归问题
- 数组的C++最大值使用递归问题
- 卡拉苏巴乘法,递归问题
- c++中生成排列中的递归问题
- c++爬楼梯递归问题
- 递归问题帮助c++
- 错误C2064: term不计算为一个带有1个参数的函数和递归问题
- C++链表递归问题