标签:必须 缺点 for 简单的 strong 递归 可读性 区别 return
一、递归算法:直接或间接地调用自身的算法。
1、使用递归要注意的有两点:
2、递归分为两个阶段:
利用递归可以解决很多问题:如背包问题,汉诺塔问题,...等.
3、优缺点
(2) 可能存在重复计算相同的子问题。
二、分治法:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同,然后递归地解这些子问题,
最后将各个子问题的解合并得到原问题的接。
应用:二分搜索、大整数乘法。
三、迭代:利用变量的原值推算出变量的一个新值。
四、递归和迭代的区别:
通过斐波那契数列为例:
F(0)=1; n = 0
F(n) = F(1)=1; n = 1
F(n)=F(n-1)+F(n-2); n > 1
//递归实现 int fib(int n){ if(n>1) return fib(n-1) + fib(n-2); else return 1; // n = 0, 1时给出recursion终止条件 } //迭代实现 int fib(int n){ int i, temp0, temp1, temp2; if(n<=1) return 1; temp1 = 0; temp2 = 1; for(i = 2; i <= n; i++){ temp0 = temp1 + temp2; temp2 = temp1; temp1 = temp0; } return temp0; }
标签:必须 缺点 for 简单的 strong 递归 可读性 区别 return
原文地址:https://www.cnblogs.com/jiaoqiang/p/8849707.html