《实验7递归算法》由会员分享,可在线阅读,更多相关《实验7递归算法(3页珍藏版)》请在金锄头文库上搜索。
1、实验七实验七: 1、 阶乘的递归实现阶乘的递归实现 2、 Fibonacci 数列的递归实现数列的递归实现 3、 猴子吃桃问题猴子吃桃问题一只猴子吃一棵桃树上的桃子,按一只猴子吃一棵桃树上的桃子,按 每天吃树上每天吃树上 1/2 的桃子,再多一个,到的桃子,再多一个,到 第第 10 天,树上只有一个桃子,问:树天,树上只有一个桃子,问:树 上原有多少个桃子?上原有多少个桃子?(要求:用递归方法实现)(要求:用递归方法实现)1、 方法 1: 递归实现 #include “stdio.h“ int fact(int n) if(n=0)return 1; return n*fact(n-1); v
2、oid main() int m; printf(“请输入阶乘数:“); scanf(“%d“, printf(“%d!阶乘的值为:%d“,m,fact(m); getch();方法 2: 循环实现 #include “stdio.h“ void main() int i,n,x=1;printf(“请输入阶乘数:“);scanf(“%d“,if(n=0) x=1;else for(i=n;i=1;i-)x=x*i;printf(“%d“,x);getch(); 2、 #include “stdio.h“ int fact(int n) if(n=2)return 1; return fact
3、(n-1)+fact(n-2); void main() int n,i; printf(“请输入斐波那契的项数:“); scanf(“%d“, printf(“前%d项的数为:“,n); for(i=1;i=n;i+) printf(“ %d“,fact(i); getch();3、 方法一:由第一天到第十天计算 #include “stdio.h“ int fact(int n) if(n=10)return 1; return (fact(n+1)+1)*2); void main() int day; printf(“*猴子吃桃问题*n“); printf(“请输入天数:“);scanf(“%d“, printf(“在第%d天的桃子个数为:%d“,day,fact(day); getch();方法二:由第十天到第一天计算#include “stdio.h“ void main() int day,i,x=1; printf(“*猴子吃桃问题*n“); printf(“请输入天数:“); scanf(“%d“, for(i=day;i10;i+) x=(x+1)*2; printf(“在第%d天的桃子个数为:%d“,day,x); getch();