资源描述:
《算法设计递归实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1设计算法和程序解决“百鸡问题”;中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?[可用穷举法解决]#include"stdio.h"intmain(){intJ1,J2,J3;/*J1代表鸡翁,J2代表鸡母,J3代表鸡雏*/doublea=1/3.0;for(J1=100;J1>=0;J1--){for(J2=100;J2>=0;J2--){for(J3=100;J3>=0;J3--){if((J1+J2+J3==100)
2、&&(5*J1+3*J2+a*J3==100)){printf("t购买鸡翁%d只,鸡母%d只,鸡雏%d只,总计100只,共花费100元.t",J1,J2,J3);J3--;}continue;}}}}2分别用递归与非递归实现(1)求取两数最大公约数(gcd); gcd(m,n)=gcd(n,m%n) 递归算法:#include"stdio.h"intgcd(intm,intn){if(n==0)return(m);elsereturngcd(n,m%n);}intmain(){in
3、tz,a,b;printf("t请输入两个整数(输入时请用逗号分开):");scanf("%d,%d",&a,&b);z=gcd(a,b);printf("t%d和%d的最大公约数为:%dt",a,b,z);}非递归算法:#include"stdio.h"intgcd(intm,intn){inttemp;if(m4、t请输入两个整数(输入时请用逗号分开):");scanf("%d,%d",&a,&b);z=gcd(a,b);printf("t%d和%d的最大公约数为:%dt",a,b,z);}(2)计算斐波那契数列; 比较效率,分析效率差异可能的产生原因。3用递归算法实现汉诺塔问题。#includevoidhannuota(intn,charJ1,charJ2,charJ3){if(n>0){hannuota(n-1,J1,J3,J2);printf("tt%c移动到%c",J1,J2);h
5、annuota(n-1,J3,J2,J1);}}intmain(void){intn;do{printf("t请输入你的盘子的数量(整数):");scanf("%d",&n);hannuota(n,'A','B','C');}while(n);} 4合并排序(分治法)。以纯代码形式提交,注意输入、输出格式。文章出处:http://www.daxiao51.com/forum.php?mod=viewthread&tid=1466&extra=