区别:函数嵌套是语言特性,递归调用是逻辑思想。这两者有关,但并不互斥。一个递归过程可以包含函数嵌套。同样,一个递归函数也可当做是自身嵌套函数。
函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数:
func1()
{
func2();
}
func2()
{
func3();
}
func3()
{
printf("Hello");
}
这个就叫做嵌套调用,它是一个语言提供的程序设计的方法,也就是语言的特性。
而递归,是一种解决方案,一种思想,将一个大工作分为逐渐减小的小工作,比如说一个人要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬走48块,那剩下的一块就能搬完了……以此类推的思考,递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
递归最明显的特点就是,自己调用自己(就是函数嵌套调用)。如下例
funca()
{
if(statement1)
funca();
else
exit(0);
}
概括说,函数嵌套就是函数调用函数,是普遍的,递归就是函数调用自身,使函数嵌套的一个特例。