请问下c语言中函数的嵌套和递归怎么区别

二者什么时候能用什么时候不能用?
请举几个实例说说。谢谢

区别:函数嵌套是语言特性,递归调用是逻辑思想。这两者有关,但并不互斥。一个递归过程可以包含函数嵌套。同样,一个递归函数也可当做是自身嵌套函数。
函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数:
func1()
{
func2();
}
func2()
{
func3();
}
func3()
{
printf("Hello");
}
这个就叫做嵌套调用,它是一个语言提供的程序设计的方法,也就是语言的特性。
而递归,是一种解决方案,一种思想,将一个大工作分为逐渐减小的小工作,比如说一个人要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……以此类推的思考,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
递归最明显的特点就是,自己调用自己(就是函数嵌套调用)。如下例
funca()
{
if(statement1)
funca();
else
exit(0);
}
概括说,函数嵌套就是函数调用函数,是普遍的,递归就是函数调用自身,使函数嵌套的一个特例。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-07-04
函数嵌套是语言特性,递归调用是逻辑思想。
函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数
funca()
{
funcb();
}
funcb()
{
funcc();
}
funcc()
{
cout << "Hello" <<endl;
}
这个就叫做嵌套调用,它是一个语言提供的程序设计的方法,也就是语言的特性。
而递归是一种解决方案,一种思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
递归最明显的特点就是,自己调用自己(不就嵌套调用了嘛)。
funca()
{
if(statement1)
funca();
else
exit(0);
}
概括说,函数嵌套就是函数调用函数,是普遍的,递归就是函数调用自身,使函数嵌套的一个特例。本回答被提问者和网友采纳
第2个回答  2012-07-04
在C/C++中,函数可以递归调用,也可以嵌套调用。
递归调用是指自己调用自己,而嵌套调用是指两个或多个函数间相交叉互调用。递归调用时,函数自身必须更改返回(结束)条件,否则就会进入死循环,而嵌套调用就没有这样的要求,与普通函数一样,完成指定操作后正常返回即可。
第3个回答  2012-07-04
简单的说:就是指在某些情况下,您可能需要将某函数作为另一函数的参数使用,这一函数就是嵌套函数。比如:int f(x,y) 是个函数 那么 int f(int f(x,y),m)这个就是函数的嵌套;

函数的递归调用是指在调用一个函数过程中又出现直接或间接的调用该函数本身,递归调用必须有一个终止条件 不然会进入死循环。
例如:
int f(int n)//求n的阶乘函数
{
if(n<2) //递归终止条件
return 1;
return n*f(n-1);
}
第4个回答  2012-07-04
函数嵌套?没关注过这个说法,难道是说一个函数里调用另外一个函数?

递归,就是一个函数直接或间接的调用了自己,这里强调的是调用回自己。

void func() { .....; fun(); ......}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网