百思不得其解:2004年上半年程序员考试题 中的一个题目

cwbnig 2004-09-14 01:05:44
●已知递归函数f(n)的功能是计算1+2+…+n,且n≥1,应采用的代码段是__(15)__。
(15)A.if n>l then return 1 else return n+f(n-1)
  B.if n>l then return 1 else return n+f(n+1)
  C.if n>l then return 0 else return n+f(n-1)
  D.if n>l then return 0 else return n+f(n+1)

正确答案是C。

================================
为什么是C?

f(n)=1+2+…+n 并且n≥1了。

f(1)=1
f(2)=1+2=f(1)+2
f(3)=1+2+3=f(2)+3
f(4)=1+2+3+4=f(3)+4
f(5)=1+2+3+4+5=f(4)+5
…………………………
f(n)=1+2+…+n=f(n-1)+n

C答案:
if n>l then return 0
如果n大于1,那么返回0 ???这不胡扯吗?
else return n+f(n-1)
如果n小于等于1,那么返回n+f(n-1)?这也不对啊。
如果n=1,那么返回1,如果n<0,那么返回0

我认为答案应该是:if n<l then return 0 else return n+f(n-1)

我不理解,请各位赐教,衷心感谢。
...全文
261 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwbnig 2004-09-15
  • 打赏
  • 举报
回复
是11月份考啊。
pchobby 2004-09-14
  • 打赏
  • 举报
回复
我今年10月份可就考试了啊,怎么会这样呢????
tdmlxq 2004-09-14
  • 打赏
  • 举报
回复
什么题哦
Lutx 2004-09-14
  • 打赏
  • 举报
回复
这种考试,不考也罢。考出了也不能证明一个人的水平怎么样。
lliushine 2004-09-14
  • 打赏
  • 举报
回复
不是说n>=1了吗?
为什么还要考虑n<0的情况呢?
我觉得if n == 1 return 1; else return n+f(n-1);
更好.
cwbnig 2004-09-14
  • 打赏
  • 举报
回复
我的吗呀,真的印错了?
test7979 2004-09-14
  • 打赏
  • 举报
回复
出题人有头无脑
alickma 2004-09-14
  • 打赏
  • 举报
回复
相信自己
wzhjhon 2004-09-14
  • 打赏
  • 举报
回复
常在河边走,哪有不湿鞋!
ClampHammer 2004-09-14
  • 打赏
  • 举报
回复
汗,这个都有错
wybin 2004-09-14
  • 打赏
  • 举报
回复
cmrw(天明)说的有道理
理想哥 2004-09-14
  • 打赏
  • 举报
回复
他把"<"都印错成">"
stonecsdn 2004-09-14
  • 打赏
  • 举报
回复
答案有误

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧