对与初学者来说,是不是觉得这两种方法都差不多呢?不知道它们之间有什么区别,今天我们就一起来探讨它们之间的区别。
递推算法:
是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法。
递归算法:
在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。
区别:
相对于递归算法,递推算法免除了数据进出栈的过程,也就是说,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值.
比如阶乘函数:f(n)=n*f(n-1)
在f(3)的运算过程中,递归的数据流动过程如下:
f(3){f(i)=f(i-1)*i}–>f(2)–>f(1)–>f(0){f(0)=1}–>f(1)–>f(2)–f(3){f(3)=6}
而递推如下:
f(0)–>f(1)–>f(2)–>f(3)
由此可见,递推的效率要高一些,在可能的情况下应尽量使用递推.但是递归作为比较基础的算法,它的作用不能忽视.所以,在把握这两种算法的时候应该特别注意。
例子:斐波那契数列
递推:
#include <iostream>
using namespace std;