c++ 递归算法
第1页 什么是递归
递归是一种用来解决问题的编程技术,它的定义是: “依据某个算法思想,把一个问题的解决思路表达为一系列问题的嵌套解决,称为递归(recursion)”。在C/C++编程中,通常采用递归函数(RecursiveFunction)的形式表现递归思想,即一个函数内部直接或间接调用它本身,从而解决一个程序问题,整个程序呈现一种“递推”的逻辑结构。
第2页 递归算法的实现
在C/C++中实现递归算法,需要定义一个递归函数,它有输入参数和返回值,返回值为算法的解决结果。它的实现过程是:
1)确定函数的输入参数和返回值;
2)分情况处理,当遇到一个简单情况时,直接返回结果;
3)对复杂情况,把复杂情况划分为若干个相似的简单情况,对这些相似的简单情况分别
调用递归函数,并将各个结果合并成整体结果。
第3页 递归算法示例
下面给出一个示例,计算n的阶乘:
int Factorial(int n){
// 先处理特殊情况
if(n==0){
return 1;
}
// 处理n>0的情况
else{
return n*Factorial(n-1);
}
}
第4页 递归算法的优缺点
1. 优点:
编程递归函数 (1)实现简单、紧凑:递归的结构清晰、可读性强,一连串嵌套的递归调用,其实就是一种堆栈操作,可以缩减代码量,实现比较简单;
(2)易于理解:递归对问题进行了分解,而分解出来的子问题与原问题的解法相同,给人一种分而治之的感觉,比较容易理解;
2. 缺点:
(1)容易产生堆栈溢出:递归通常要求占用较多的内存,使程序易于堆栈溢出;
(2)性能较差:递归程序比相应的非递归程序耗时更久、运算更多,因为要经历函数调用的过程,所以性能较差;
(3)不容易将递归程序移植到嵌入式系统等具有内存资源有限的环境中:内存有限,有时会出现无法使用递归的情况。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论