递归地添加数字序列

Sea*_*ean 6 c algorithm recursion add sequence

嘿我试图用一点递归刷新我的想法.我想添加从"开始"到"结束"的所有数字.

即如果开始是1,结束是5.那么答案将是1 + 2 + 3 + 4 + 5 = 15

到目前为止我已经有了这个

int calc(int start, int end){
    if(start > end)
        return total;
    else{
        total = total + start;  
    return sum1(start++, end);
    }
} 
Run Code Online (Sandbox Code Playgroud)

它不起作用(我得到段故障).我究竟做错了什么?

编辑:对不起,我在我的实际代码中使用相同的变量,当我写这个,我最终作为开始/结束,并忘记更改所有代码.

ins*_*ity 7

你的函数里面有什么fromto变量?也许你使用一些全局变量,而不是使用的startend,这就是为什么你有问题吗?另外你为什么sum1calc函数内使用而不是calc

试试这个:

int calc(int start, int end){
    if(start > end)
        return 0;
    else
        return start + calc(start + 1, end);
} 
Run Code Online (Sandbox Code Playgroud)

  • 它应该是++开始.预增量而不是后增量.start ++永远不会递增传递给递归函数的值,并导致无限循环.因此分段错误. (4认同)
  • @Splendor,@ Sien Arnold,`++ start`不会导致段错误,但它可能导致错误的结果,因为编译器可以在语句前面的`start`之前或之后自由地评估`++ start` .通常,不应该在表达式中更改和使用变量. (2认同)