36 杀鸡用牛刀——要用递归啊!
成绩: 5 / 折扣: 0.8
背景:
哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。
功能:
求整数 n 到 m 区间的累加和,其中n<=m。
输入:
区间的起始点n 区间的终止点m
输出:
累加和
要求:
使用递归算法完成。如此简单的题目当然要有隐含的测试用例啦,就3个,看看谁能猜出来。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
测试用例 1 | 以文本方式显示 1.1 10↵ | 以文本方式显示 1.The sum from 1 to 10 is 55.c语言编写递归函数↵ | 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示 1.10 15↵ | 以文本方式显示 1.The sum from 10 to 15 is 75.↵ | 1秒 | 64M | 0 |
#include<stdio.h>
int sum(int a,int b)
{
int result=0;
if(b-a==1)
{result=a+b;}
else if(b==a)
{result=a;}
else
{
result=sum(a,b-2)+sum(b-1,b);
}
return result;
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("The sum from %d to %d is %d.\n",a,b,sum(a,b));
}
37 求最大公约数——递归
成绩: 5 / 折扣: 0.8
请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。
= m 当 m<=n 且 n mod m =0
GCD(N,M) = GCD(m,n) 当n<m时
= GCD(m, n mod m) 其他
输入:
n和m
输出:
n和m的最大公约数
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
测试用例 1 | 以文本方式显示 1.24 48↵ | 以文本方式显示 1.24↵ | 1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示 1.13 15↵ | 以文本方式显示 1.1↵ | 1秒 | 64M | 0 |
#include<stdio.h>
int f(long a,long b)
{
long result;
long temp=a%b;
if(temp==0)
result=b;
else
result=f(b,temp);
return result;
}
int main()
{
long a,b;
scanf("%ld%ld",&a,&b);
long temp;
if(a<b)
{
temp=a;
a=b;
b=temp;
}
printf("%ld\n",f(a,b));
}
38 回文字符串——递归
成绩: 5 / 折扣: 0.8
有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。
输入:
字符串
输出:
Yes或者No
说明:
如输出Yes,说明输入的字符串是一个回文字符串
输出No,说明输入的字符串不是一个回文字符串
请使用递归算法实现。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
测试用例 1 | 以文本方式显示 1.LeveL↵ | 以文本方式显示 1.Yes↵ | 1秒 | 64M | 0 |
#include<stdio.h>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论