递推与递归
递推像是多米诺骨牌,递归是大事化小。递推的效率更高
递推:斐波那契数列
例:母亲为儿子的四年大学学费准备了一笔存款,儿子每月月底取下月生活费1000元。银行年利率为1.71%,毕业时连本带息要取出1000元。则要存入多少钱。
#include <stdio.h>
#define RATE 0.0171
int main () {
double corpus[49] = {0};
corpus[48] = 1000;
for (int i = 47; i > 0; i--) {
corpus[i] = (corpus[i+1]+1000)/(1+RATE/12);
}
for (int i = 48; i > 0; i--)
printf ("%d月月末共计:%.2f\n",i,corpus[i]);
return 0;
}
递归:汉诺塔
#include <stdio.h>
move (int n,int x,int y,int z) {
if (n == 1)
printf ("%c-->%c\n",x,z);
else {
move (n-1,x,z,y);
printf ("%c-->%c\n",x,z);
move (n-1,y,x,z);
}
}
int main () {
int num = 0;
printf ("请输入盘子个数:");
scanf ("%d",&num);
move(num,'a','b','c');
return 0;
}
阶乘
#include <stdio.h>
int fact (int n) {
if (n == 1)
return n;
else return n * fact(n-1);
}
int main () {
int num = 0;
scanf ("%d",&num);
printf ("%d\n",fact(num));
return 0;
}
本文探讨了递推和递归两种编程概念,通过实例展示了如何使用递推解决斐波那契数列问题,以及如何用递归实现汉诺塔和阶乘计算。递推在效率上更优,递归则是将复杂问题分解为简单部分。
4984

被折叠的 条评论
为什么被折叠?



