C语言中如何从递归函数中退出呢!

如何从递归函数退出

    递归函数定义:编程语言中,函数Func()直接或间接调用函数本身,则该函数称为递归函数。递归函数不能定义为内联函数。在数学上,关于递归函数的定义如下:对于某一函数f(x),其定义域是集合A,那么若对于A集合中的某一个值X0,其函数值f(x0)由f(f(x0))决定,那么就称f(x)为递归函数。

    由于递归函数不断调用自己的特性,必须使用边界条件约束,来退出递归,停止迭代,否则是一个不断增大的死循环。

    在C语言中,一般采用 return value;的方式退出本次递归,其中value为返回值,对于没有返回值的函数,return即可。

    在C语言中,若是需要直接终止整个递归,包括主程序,可以采用 exit()函数终止。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-15
递归是对递推关系的模拟;

你的问题,有什么样的递推结构,在什么情况下,不需要递推,可以直接得出结论。

了解了这些情况,你就可以着手写代码了。

这样的代码,自然就,以递归函数实现,最方便了。

1)那种可以,直接解决问题的情况,自然就是直接返回的条件了。
2)那种需要递推,才可以解决的,自然就写成,递归调用了。
3)那种实际的,执行代码,自然就夹在,递归调用之间,写出来了。

写递归函数,主要分析,
1)何时结束
2)何时递归调用
3) 执行任务的代码写在哪里。

递归调用本身,并不是解决,实际问题的方案。只是解决复杂结构问题的,一种方法。
解决实际问题时,要结合所执行的任务来写代码。

比如,树的遍历。
递归只是个框架,执行遍历本身要干什么,比如打印节点数据,这才是递归函数的任务。
一个框架搭起来了,可以解决一批相同结构的问题。
然而一个空的框架,什么问题也解决不了。即使搭的再好,也无用。本回答被网友采纳
第2个回答  2013-05-15
递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
我们要注意的就是在使用递归的时候,必须有一个明确的递归结束条件,称为递归出口。另外具体问题具体分析,给个简单的例子吧
#include <stdio.h>
#include <stdlib.h>

float myfunction(int n,int x)
{
if (0 == n)
{
return 1;
}
else if (1 == n)
{
return x;
}
else
{
return ((2 * n - 1) * x - myfunction(n - 1 , x) - (n - 1) * myfunction(n - 2, x)) / n;
}
}

int main(int argc, char *argv[])
{
int n,x;
float result;
printf("please inputa n,x:");
scanf("%d,%d",&n,&x);
result = myfunction(n,x);
printf("the result is : %f\n",result);
system("pause");
return 0;
}
此程序出处http://zhidao.baidu.com/question/356821940.html

LZ可自行揣测。
第3个回答  2013-05-15
需要设置一个退出的条件,比如
f(int i)
{
if(i==0)
return;
else
{
f(i-1);

}

}

这样当i递减到0的时候,就不会再继续递归了
第4个回答  2013-05-15
对递归函数中的某一关键变量设置阈值条件。
相似回答