我需要使用递归来查找整数数组中的最大数字。此外,我需要获得最大数字的值和索引。我使用" struct"但它给了我一些奇怪的数字,我无法弄清楚为什么。
这是我的结构:
struct maxNumber
{
int index;
int value;
};
这是我的find_largest函数:
maxNumber Numbers::find_largest()
{
maxNumber max;
int current ;//keep track of the current counter
if(size == 1)
{
max.value = numArray[0];
max.index = 0;
return max;
}
if(current < size && size != 0) //loop through all numbers in the array
{
if(numArray[current] >= max.value)
{
max.value = numArray[current];
max.index = current;
}
current++;
find_largest();
}
return max;
}
然后,在主要功能中,我就这样做了:
int result = num.find_largest().value;
cout << "The largest number is " << result << endl;
然而,它给了我一个非常大的数字。需要一些帮助才能找出错误的原因。
答案 0 :(得分:0)
您的主要问题是current
具有本地存储空间,因此每次调用findLargest
时都会重新分配。将声明更改为此
static int current = 0;
如果size
和numArray
在类定义的其他位置正确定义,它应该可以正常工作。
但同样的事情正在max
更加巧妙地发生,并且它也应该静态地声明。