北京理工大学级C程序设计非信息类答案part2概要
北京理工大学级C程序设计非信息类答案part 2
49. 【小学递归】杀鸡用牛刀——要用递归啊!
成绩5开启时间05月10日 星期六 14:00折扣0.8折扣时间05月24日 星期六 23:55允许迟交否关闭时间06月1日 星期日 23:55背景:? 哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
功能:?求整数 n 到 m 区间的累加和,其中n<=m。输入: 区间的起始点n? ?区间的终止点m 输出:??? 累加和
要求: 使用递归算法完成。如此简单的题目当然要有隐含的测试用例啦,就3个,看看谁能猜出来。
?测试输入期待的输出时间限制内存限制额外进程测试用例 1 1?10? The?sum?from?1?to?10?is?55.?1秒64M0测试用例 2 10?15? The?sum?from?10?to?15?is?75.?1秒64M0int?sum(int?m,int?n) ??
{if(m==n)?return?m;int?i;for(i=n;i>=m;i--)?return?i+sum(m,i-1);} ?
#include? ??
int?main(){int?m,n,s=0;scanf("%d%d",&m,&n);s=sum(m,n); ??
printf("The?sum?from?%d?to?%d?is?%d.\n",m,n,s);return?0;}??
50. 【中学】求最大公约数——递归
成绩5开启时间05月10日 星期六 14:00折扣0.8折扣时间05月24日 星期六 23:55允许迟交否关闭时间06月1日 星期日 23:55请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。
???????? = m??????????? ?当 m<=n 且 n mod m =0GCD(N,M) = GCD(m,n)? ?当n
输入: n和m 输出: ? n和m的最大公约数
?测试输入期待的输出时间限制内存限制额外进程测试用例 1 24?48? 24?1秒64M0测试用例 2 13?15? 1?1秒64M0#include? ??
int?f(int?x,int?y) ??
{int?s,t;t=x%y; ??
if(t==0)?s=y;else?s=f(y,t); ??
return?s;} ??
int?main() ??
{int?m,n;scanf("%d%d",&m,&n); ??
printf("%d\n",f(m,n));return?0;}
51. 【数列递归】求序列之和——递归
成绩5开启时间05月10日 星期六 14:00折扣0.8折扣时间05月24日 星期六 23:55允许迟交否关闭时间06月1日 星期日 23:55请使用递归算法求序列1 + 1/2 - 1/3 + 1/4?-1/5 ......的前n项之和。
输入:n 输出:序列的前n项和(精确到小数点之后第6位)
?测试输入期待的输出时间限制内存限制额外进程测试用例 1 1?1?1秒64M0测试用例 2 2?1.500000?1秒64M0测试用例 3 3?1.166667?1秒64M0#include ??
float?sum(int?n) ??
{float?s;if(n==1)?s=1.0; ??
else?if(n%2==0)?s=sum(n-1)+1.0/n; ??
else?s=sum(n-1)-1.0/n;return?s;} ??
int?main() ??
{int?n;float?s;scanf("%d",&n); ??
if(n==1)?printf("1\n"); ??
else?{s=sum(n);printf("%.6f\n",s);}}??
52. 【大学】函数递归*
成绩5开启时间05月10日 星期六 14:00折扣0.8折扣时间05月24日 星期六 23:55允许迟交否关闭时间06