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) 值。
希望这是有道理的:)
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) 值。
希望这是有道理的:)