这两个概念其实应该从不同维度,或者说不同学科去理解应该比较好。
1、递推:其对应英文应该是recurrence relation(Inductive),即递推关系。什么是递推关系呢?从数学角度,递推关系往往可以用数学公式来表示。比如,高中学的等比数列,a1=1, an=再比如fibonacci,Fn = Fn-1+Fn-2.递推可以理解是数学上的概念。从已知到未知, 从1 往 n推(未知)。
递进 依次 推算
2、递归:对应英文recursion,这是一个计算机科学里的概念,其定义为函数自己调用自己。计算机科学里除了递归,还有一个是迭代,它们和递推三者的关系,可以理解为:
在编程里,递推关系可以通过递归或者迭代来实现,但是递归和迭代又不仅仅只能用来实现递推关
从未知到已知 Recursive是从n(未知)往1推, 再层层返回
归纳
3.迭代(辗转) –Iterative 不断将结果当做变量带入,就叫迭代
迭代与递归: 1,从程序上看,递归表现为自己调用自己,迭代则没有这样的形式。 2,递归是从问题的最终目标出发,逐渐将复杂问题化为简单问题,最终求得问题 是逆向的。迭代是从简单问题出发,一步步的向前发展,最终求得问题。是正向的。 3,递归中,问题的n要求是计算之前就知道的,而迭代可以在计算中确定,不要求计算前就知道n。 4,一般来说,递推的效率高于递归(当然是递推可以计算的情况下)
递归:
int fib(int n){
if(n>1) return fib(n-1) + fib(n-2);
else return n; // n = 0, 1时给出recursion终止条件
迭代:
int fib(int n){
int i, temp0, temp1, temp2;
if(n
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777