使用struct和recursion查找整数数组中的最大数字

时间:2015-04-29 03:34:29

标签: c++ recursion struct

我需要使用递归来查找整数数组中的最大数字。此外,我需要获得最大数字的值和索引。我使用" 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; 

然而,它给了我一个非常大的数字。需要一些帮助才能找出错误的原因。

1 个答案:

答案 0 :(得分:0)

您的主要问题是current具有本地存储空间,因此每次调用findLargest时都会重新分配。将声明更改为此

static int current = 0;

如果sizenumArray在类定义的其他位置正确定义,它应该可以正常工作。

但同样的事情正在max更加巧妙地发生,并且它也应该静态地声明。