什么是函数嵌套和递归
解释⼀:
函数的嵌套调⽤是在函数调⽤中再调⽤其它函数,函数的递归调⽤是在函数调⽤中再调⽤该函数⾃⾝。
解释⼆:
函数嵌套是语⾔特性,递归调⽤是逻辑思想。
函数嵌套允许在⼀个函数中调⽤另外⼀个函数,⽐如有三个函数:
func1()
{
func2();
}
func2()
{
func3();
}
func3()
{
printf("Hello");
}
这个就叫做嵌套调⽤,它是⼀个语⾔提供的程序设计的⽅法,也就是语⾔的特性。
⽽递归,是⼀种解决⽅案,⼀种思想,将⼀个⼤⼯作分为逐渐减⼩的⼩⼯作,⽐如说⼀个⼈要搬50块⽯头,他想,只要先搬⾛49块,那剩下的⼀块就能搬完了,然后考虑那49块,只要先搬⾛48块,那剩下的⼀块就能搬完了……以此类推的思考,递归是⼀种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
递归最明显的特点就是,⾃⼰调⽤⾃⼰(就是函数嵌套调⽤)。如下例
funca()
{
if(statement1)
funca();
else
exit(0);
}
概括说,函数嵌套就是函数调⽤函数,是普遍的,递归就是函数调⽤⾃⾝,使函数嵌套的⼀个特例。
递归的作⽤:
递归做为⼀种算法在程序设计语⾔中⼴泛应⽤.是指函数/过程/⼦程序在运⾏过程序中直接或间接调⽤⾃⾝⽽产⽣的重⼊现象.
递归是⼀个函数在其定义中⼜直接或间接调⽤⾃⾝的⼀种⽅法,它通常把⼀个⼤型复杂的问题层层转化为⼀个与原问题相似的规模较⼩的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,⼤⼤地减少了程序的代码量。递归的能⼒在于⽤有限的语句来定义对象的⽆限集合。⽤递归思想写出的程序往往⼗分简洁易懂。
⼀般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满⾜时,递归前进;当边界条件满⾜时,递归返回。
注意:
(1) 递归就是在过程或函数⾥调⽤⾃⾝;
(2) 在使⽤递归策略时,必须有⼀个明确的递归结束条件,称为递归出⼝。
编程递归函数递归算法⼀般⽤于解决三类问题:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论