计算n个数之和的递归函数的意外输出

时间:2018-03-07 18:24:46

标签: c++ recursion

我正在尝试编写一个简单的递归函数来计算n个数的总和。所以,我编写了下面的代码并且它运行良好,但是当我尝试在递归函数中打印sum时,它会打印(在主函数中)一个随机数。

int SumRec(int n, int sum)
{
    sum+=n;
    if(n==1)
        return sum;
    else
        SumRec(n-1,sum);
    cout<<sum<<endl;
}

int main()
{
    cout<<SumRec(2,0)<<endl;

    return 0;
}

1 个答案:

答案 0 :(得分:3)

您应确保SumRec返回整数值,只要您在声明时承诺。我看到,如果n == 1它返回sum,否则不会!所以你应该看起来像:

int SumRec(int n, int sum){
    sum += n;
    if(n == 1)
        return sum;
    else
        sum = SumRec(n - 1, sum);

    cout << sum << endl;
    // when done from recursion i should return a value as i promised
    return sum;   
}