1. 递推和递归
- 递推:数学上的概念,主要指递推式、递推数列或递推函数。一个数列的下一项由它前面几项的一种运算(或函数)构成,如 a [ n ] = a [ n − 1 ] + a [ n − 2 ] a[n]=a[n-1]+a[n-2] a[n]=a[n−1]+a[n−2]。
- 递归:计算机中的概念,主要指计算机上的递归函数,(计算机中的‘函数’不同于数学上的‘函数’,这里指一段代码),即指会调用自己的函数。
2. 关系
- 数学上的递推函数在计算机中可以通过递归来实现,但也可以不通过递归来实现。
- 举例:在计算机中实现递推函数
a
[
n
]
=
a
[
n
−
1
]
+
a
[
n
−
2
]
a[n]=a[n-1]+a[n-2]
a[n]=a[n−1]+a[n−2]
- 法1:通过递归实现
int Fib(int n){ if(n<=2) return 1; return Fib(n-1)+Fib(n-2); }
- 法2:不通过递归实现
int Fib(int n){ int f1 = 1, f2 = 1; int i; if(n<=2) return 1; for(i=3li<=n;i++){ int f=f1+f2; f1 = f2; f2 = f; } return f; }
- 法1:通过递归实现