递推法的两种具体形式:
1 顺推
从已知出发,利用递推式,推导出问题的解(顺推)
2 逆推
从问题出发,逐步推导到已知条件,此种方法叫逆推。
无论顺推还是逆推,其关键是要找到递推式。
2例题
1 . 求菲波那契数列的前 n 项
Fibonacci 数列:0,1,1,2,3,5,8,13,21,34,……
f0 = 0
f1 = 1
fn = fn-1 + fn-2 ( n >= 2 )
(1)
#include <iostream>
using namespace std;
int main()
{
//求斐波那契数列
int n, i, a0, a1;
cin >> n;
a0 = 0, a1 = 1;
for (i = 2; i <= n/2 ; i++) {
//n/2是为了让下面的代码更加简单
a0 = a0 + a1;
a1 = a1 + a0;
cout << a0 << " " << a1 << " ";
}
if (n > (n > (i - 1) * 2))//如果n与后面不匹配,要加上最后的a0+a1
cout << a0 + a1 << endl;
return 0;
}
(2)
int main()
{
//求斐波那契数列
int n, i, a0, a1, a3;
cin >> n;
a0 = 0, a1 = 1;
for (i =3; i <= n ; i++) {
//本来就有两个了
a3 = a1 + a0;
a0 = a1;
a1 = a3