递归累加数字

时间:2016-11-19 14:07:16

标签: recursion

我在递归方面非常糟糕,我正在努力学习它。我有这个功能

public static int ques07(int n) {
        int sum = 1;
        int k = 1;
        while (sum <= n) {
            sum = sum + k;
            k++;
        }
        return sum;
    }

我正在尝试编写这个函数的递归等价物,到目前为止我已经实现了这个

 public static int ques7(int n) {

        int sum = 1;

       if(sum <= n)
        return sum + ques7(n-1);
        else
            return sum;

    }

但我怀疑这是不对的,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

试试这个:

public static int recSum(int n, int sum, int k) {
    if ((sum+k)<=n){
        return recSum(n,sum+k, k+1);
    }else{
        return (sum+k);
    }
}  

要检查功能是否相同,您可以写:

int main()
{
  std::cout << "Original sum ";
  std::cout << ques07(22)<<"\n";
  std::cout << "Recursive sum ";
  std::cout << recSum(22,1,1);  

}

但请记住,递归更耗费内存。使用WHILE循环,仅限于INT变量。使用递归,您将受限于INT参数和堆栈内存(每次调用新函数时都会使用更多内存)。