递推思想:利用某个已知的条件,利用特定关系逐步递推,直到得到结构。
顺推法:从已知条件出发,逐步推算出要解决问题的方法。例如:斐波那契数列
逆推法:从已知结果出发,用迭代表达式逐步推算出问题开始的条件。
实例:斐波那契数列(f(n) = f(n-1)+f(n-2))
兔子出生2个月后就具有繁殖能力,一对兔子每个月能生出一对小兔子。如果所有的兔子都不死,那么一年能繁殖对少对兔子。
分析:先在纸上推导,再画表格找规律,找到内在关系
月份:1 2 3 4 5 6
兔子:1 2 3 5 8 13
int fun(int n)
{
if(n == 0|| n == 1){
return 1;
}
return fun(n - 1) + fun( n -2);
}
实例:斐波那契数列
母亲为儿子大学四年准备一笔存款,方式是整存零取,规定儿子每月月底取下个月生活费1000元。现在假设银行的利息为1.71%,计算母亲每月最少需要存入多少钱?
分析:第47月末存款 = 1000 / (1 + 0.0171 / 12)
第46月末存款 = (1000 + 第47月末存款) / (1 + 0.0171 / 12)
第45月末存款 = (1000 + 第46月末存款) / (1 + 0.0171 / 12)
float fun(int n)
{
if(n == 48){
return 1000.0;
}
return (fun(n +1) + 1000.0) / (1 + 0.0171 / 12);
}
总结:遇到问题想不清楚,先画图找规律,或者把问题先分解