我对递归知之甚少,但我不理解函数一次又一次调用的return语句,有没有人可以帮我理解这个?
答案 0 :(得分:1)
递归中的return语句有不同的用法。
示例:
int recursion_demo(int x)
{
// Termination condition
if(x <= 0)
return 0;
print x;
//This statement return sum of 1 to x
return x + recursion_demo(x-1);
}
假设我们将此函数称为recursion_demo(5)。它将打印从5到1的数字。现在如果我们没有终止条件,这个递归将继续运行。最后一行是递归计算从1到5的数字之和。所以它最终将返回15.内部函数调用将按此顺序:
recursion_demo(5);
5 + recursion_demo(4);
4 + recursion_demo(3);
3 + recursion_demo(2);
2 + recursion_demo(1);
1 + recursion_demo(0);
recursion_demo(0)将终止此调用,并且它们将不再进行递归调用。现在它将开始回滚。 recursion_demo(0)返回0 所以
1 + recursion_demo(0)将为1 + 0; = 1;
1将返回2 + recursion_demo(1);这将成为2 + 1,依此类推,最后recursion_demo(5)
将返回5+4+3+2+1 = 15
。
答案 1 :(得分:0)
这是一个递归的例子,其中一个函数在C ++中一次又一次地调用。
int foo() { //1.
return foo(); //2.
}
让我们回顾一下代码的解释(评论与数字相符)。
foo()
。foo()
已启动,它到达return foo();
行。哎呀,好像是时候再次运行foo()
了!答案 2 :(得分:0)
递归包含一个if语句......一个基本案例和一个递归案例。例如
int num(int x)
{
if (x==0)
return 0;
else
return num(x-1);
}
这里num函数再次在num函数中调用,但具有递减的值。对于x = 5,输出将是5,4,3,2,1,0;这里“0”是基本情况,其中函数停止..