第23课:递归,算年龄
本帖最后由 Peteryo01223 于 2021-1-14 14:22 编辑题目:
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
我的尝试和注释,如下:
def function(a, b, c): # 三个变量,即:第5个人的年龄、总人数、每次的年龄差。
if (b-1) > 0: # 循环次数,限于(总人数-1)次
a = a+ c # 每次都是,第5个人的年龄 + 固定年龄差。
b -= 1 # 循环一次,就减少一人。
return function(a, b, c) # 进入递归模式
else:
return 0 # 其他情况,则跳出循环
print(function(10, 5, 2))
问题:
以上尝试,没报错,但打印结果错误。
请问,可否尽量按照我的思路,予以针对性指正。谢谢高人们!
def function(a, b, c): # 三个变量,即:第5个人的年龄、总人数、每次的年龄差。
if (b-1) > 0: # 循环次数,限于(总人数-1)次
a = a+ c # 每次都是,第5个人的年龄 + 固定年龄差。
b -= 1 # 循环一次,就减少一人。
return function(a, b, c) # 进入递归模式
else:
return a # return改成a就好了吧
print(function(10, 5, 2)) 昨非 发表于 2021-1-14 14:26
一字师,谢谢!return 什么,其实我很费解,有时候是 0,有时候是 1,有时候是 function 本身。怎么定 return 内容呢? Peteryo01223 发表于 2021-1-14 14:28
一字师,谢谢!return 什么,其实我很费解,有时候是 0,有时候是 1,有时候是 function 本身。怎么定 re ...
看你需要什么呀{:10_250:}
因为你这个是对年龄的递归叠加
所以递归到最后返回的应该是初始年龄(最后一个人的年龄)
这样每一层返回计算一个年龄差
到最前面不就是你想要的结果吗
页:
[1]