网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言作业6.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言作业6

36 杀鸡用牛刀——要用递归啊! 成绩: 5 / 折扣: 0.8 背景: ??? 哈哈!我们终于学了递归了,现在大家一定感到非常有意思吧,那个典型的“汉诺塔”问题,一个非常短的程序居然可以完成如此复杂的工作,真是神奇啊!来吧,让我们也动手编写一个递归程序,当然,我们要编写的不可能太复杂。 功能: ??? 求整数 n 到 m 区间的累加和,其中n=m。 输入: ??? 区间的起始点n? ?区间的终止点m 输出: ??? 累加和 要求: ??? 使用递归算法完成。如此简单的题目当然要有隐含的测试用例啦,就3个,看看谁能猜出来。 ? 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 1?10? 以文本方式显示 The?sum?from?1?to?10?is?55.? 1秒 64M 0 测试用例 2 以文本方式显示 10?15? 以文本方式显示 The?sum?from?10?to?15?is?75.? 1秒 64M 0 #includestdio.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)? ?当nm时 ?????????????????????= GCD(m, n mod m)??? ?其他 输入: ??????? n和m 输出: ??????? n和m的最大公约数 ? 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 24?48? 以文本方式显示 24? 1秒 64M 0 测试用例 2 以文本方式显示 13?15? 以文本方式显示 1? 1秒 64M 0 #includestdio.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(ab) { temp=a; a=b; b=temp; } printf(%ld\n,f(a,b)); } 38 回文字符串——递归 成绩: 5 / 折扣: 0.8 ??? 有一种特殊形式的字符串,其正反序相同,被称为“回文字符串”。例如LeveL就是一个回文字符串。 输入: ????? ??? 字符串 输出: ????? ??? Yes或者No 说明: ????? ??? 如输出Yes,说明输入的字符串是一个回文字符串 ????? ??? 输出No,说明输入的字符串不是一个回文字符串 ????? ??? 请使用递归算法实现。 ? 测试输入 期待的输出 时间限制 内存限制 额外进程 测试用例 1 以文本方式显示 LeveL? 以文本方式显示 Yes? 1秒 64M 0 #includestdio.h int judge(char *p,int start,int n) { if((start==n/2)(*(p+start)==*(p+n-1-start))) return 0; else if(*(p+start)==*(p+n-1-start)) return judge(p,start+1,n); else return 1; } int main() { char word[50]; int n=0; int start=0; gets(word); for(int i=0;i50;i++) { if(word[i]==\0) break; n++; } if(judge(word,start,n)==0) printf(Yes\n); else printf(No\n

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档