百思不得其解:2004年上半年程序员考试题 中的一个题目
●已知递归函数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)
我不理解,请各位赐教,衷心感谢。