【发布时间】:2015-06-05 13:33:05
【问题描述】:
我有这个程序,它使用递归在数组中找到最大的整数,但它会不断返回最后输入的数字,而不是最大数字。我该如何解决这个问题?
#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;
}
【问题讨论】:
-
您是否仔细跟踪了它在运行时在每一行上所做的事情,并将其与您的预期进行比较(例如,使用调试器)?
-
我有,我觉得这就是我卡住的原因
-
@beginnerjohn,如果每一行执行在你看来都是正确的(所有变量都有预期值,该行是你希望接下来运行的行),那么程序正在像你一样工作期待。