C 编程 - 使用递归求和

C programming - Sum using Recursion

    int sum(int n)
    {
        if(n==0)
            return n;
        else
            return n+sum(n-1);    /*self call  to function sum() */
    }

谁能给我解释一下每次进入sum(int n)函数时,它是如何与前一个值求和的。我的意思是,在 'return n+sum(n-1)' 中,当调用 sum(n-1) 时,'n+' 部分如何进入下一个循环?

n+sum(n-1)

假设 n=4

4 + sum(3)
4 + 3 + sum(2)
4 + 3 + 2 + sum(1)
4 + 3 + 2 + 1 + sum(0)
4 + 3 + 2 + 1 + 0 = 10

n值不进入下一个循环。该函数一直重复直到 n-1 值变为 0.

发生这种情况时,从您的函数中,您可以看到 if(n==0) 您将 return 0,因此它 return 该值等于 sum( 1), 即 n + sum(0) ~ 1 + 0.

如此重复,直到最终达到真正的 sum(n) 值。

希望这是有道理的:)