如何在递归中传递前一个参数

时间:2011-12-30 15:20:18

标签: c function recursion

我想知道在递归中是否有可能从前一个调用函数传递一个参数。

我可以使用return来成功吗?

例如在新的递归中我会保留前一个字符串。

2 个答案:

答案 0 :(得分:2)

虽然从你的问题中未清除,但显然可以在使用递归函数时传递来自前一个调用函数的参数。

From wikipedia arcticles

  

递归是以自相似方式重复项目的过程。对于   例如,当两个镜子的表面完全平行时   彼此发生的嵌套图像是无限的形式   递归。该术语具有各种特定的各种含义   从语言学到逻辑学的学科。最普遍的   递归的应用是在数学和计算机科学中   它指的是一种定义函数的方法   定义的函数在其自己的定义中应用。   具体来说,这定义了无数个实例(函数   值),使用有限的表达式,在某些情况下可能会引用   到其他实例,但是没有循环或无限链   可以发生参考。该术语也更常用于   描述以自相似的方式重复对象的过程。

<强>实施例

•河内的塔楼

•向后编写链接列表

•递归插入

•8皇后

•识别简单语言

•前缀表达式

•转换前缀到后缀


以递归方式计算数字的阶乘的简单示例。

unsigned int factorial(unsigned int n) 
{
     if (n <= 1) 
        return 1;
    else
        return n * factorial(n-1);
}

该函数在输入的较小版本(n-1)上递归调用自身,并将递归调用的结果乘以n,直到达到基本情况,类似于阶乘的数学定义。

在使用递归函数时,您总是需要通过在函数中强加一些if条件等机制来明确地中断该函数,否则调用将永远不会返回。

答案 1 :(得分:1)

void recursive(int* data)
{
   //TODO: do something useful, for now just increment by one;
   *data+=1;

   if (*data>99)
   {
     return;
   }
   else
   { 
    recursive(data);
   }   
}