2011-12-30 23 views
0

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

我可以使用return来成功吗?

例如在新的递归我棒保持以前的字符串。

+0

你能举个例子说明你想要达到的目标吗? – 2011-12-30 15:21:58

+0

你需要发表一些代表你的意思的实际东西。 – Lion 2011-12-30 15:22:29

+2

你是什么意思?你能给个例子吗?递归通常要求你传递前一个函数的参数。 – 2011-12-30 15:22:30

回答

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

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

该函数将**从不**返回,并且会陷入无限循环,因为函数中没有任何**破坏**条件。 – Lion 2011-12-30 16:09:20

2

虽然是从你的问题未清除的,可以同时使用递归功能明显传递从以前的调用函数参数(S)。

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条件)来明确地中断该函数,否则调用将永远不会返回。