C ++中的递归和返回语句

时间:2014-02-16 06:11:53

标签: c++ recursion

我对递归知之甚少,但我不理解函数一次又一次调用的return语句,有没有人可以帮我理解这个?

3 个答案:

答案 0 :(得分:1)

递归中的return语句有不同的用法。

  1. 获取终止条件或停止无限通话的递归。
  2. 返回在当前通话之前调用步骤使用的一些数据。
  3. 示例:

    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.
}

让我们回顾一下代码的解释(评论与数字相符)。

  1. 控件到达foo()
  2. foo()已启动,它到达return foo();行。哎呀,好像是时候再次运行foo()了!
  3. 返回第1行。重复直到计算机电池,内存等耗尽

答案 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”是基本情况,其中函数停止..