(1)顺推法 即由条件推解决方法 (2)逆推法 由结论用迭代表达式推解决方法 (1)顺推法——斐波那契数列 月份 1 2 3 4 5 6 7 对数 1 1 2 3 5 6 13 分析:由第三年开始满足公式 f3=f1+f2; f4=f3+f2;....... 程序如下: #include <stdio.h> #include <stdlib.h> #define num 13//可修改月份 int main() { int i,a[num]={1,1};//前两月对数为1 for(i=2;i<num;i++) { a[i]=a[i-1]+a[i-2]; } //循环输出每个月的对数 for(i=0;i<num;i++) { printf("第%d月有%d对\n",i,a[i]); } return 0; } (2)逆推法 例:大学四年学费准备存款,方式是整存零取(double),规定每月月底取下一个月的学费,银行年利息为1.71%,求最少需要存入多少钱? 分析:可采用逆推法分析存钱取钱过程,若有最后一个月的本利(取出的利息总计),就可以从后推出本金;未知本利就可以定义一个完成程序即可;假设本利为1000元,4年分为48个月,年利息为1.71%即月利息为t=0.0171/12。 第48个月——1000;47——1000(1+t);46——(第47的月末存款+1000)(1+t); 具体代码如下: #include <stdio.h> #include <stdlib.h> #define money 1000//第48月本利可修改 #define rate 0.0171//年利率 int main() { int i; double a[49]; a[48]=1000; for(i=47;i>0;i--) { a[i]=(a[i+1]+1000)/(1+rate/12); } for(i=48;i>0;i--) { printf("第%d月本利为%.2f\n",i,a[i]); } return 0; }
递推算法思想(2)——斐波那契数列,银行存息
猜你喜欢
转载自blog.csdn.net/liuzhioj/article/details/79827102
今日推荐
周排行