hhjdsd 发表于 2020-4-1 21:02:09

python递归课后作业

问题:
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
我的代码:
什么都不打印,求解答
def funtion1(x,y):#x为第一个人的岁数,y为总人数
    if y == 1:
      x += 2
      return x
    else:
      funtion1(x,y-1)
      x += 2
      return x
    print('%d岁' % (x))
funtion1(10,5)
(ps:该来的终究还是来了{:10_285:} )

zltzlt 发表于 2020-4-1 21:05:28

本帖最后由 zltzlt 于 2020-4-1 21:08 编辑

def funtion1(x, y):# x为第一个人的岁数,y为总人数
    if y == 1:
      x += 2
      return x
    else:
      x = funtion1(x, y - 1)
      x += 2
      return x


x = funtion1(10, 5)
print('%d岁' % x)

打印应该放到外面,而且需要 x 接收 funtion1 的返回值

Hoiste 发表于 2020-4-1 21:08:44

return会把值给到函数本身也就是funtion(x,y),而且return是函数执行结束的标志,所以在函数里面不会执行到print()语句的。
页: [1]
查看完整版本: python递归课后作业