哈岁NB 发表于 2021-1-29 11:13:15

Python递归

def sum(n):
    if n > 0:
      return n + sum(n-1)
   
new_sum = sum(10)
print(new_sum)


各位大佬,为什么这样会报错,而

def sum(n):
    if n > 0:
      return n + sum(n-1)
    else:
      return 0

new_sum = sum(10)
print(new_sum)


这样就不会

yuxijian2020 发表于 2021-1-29 11:15:19

因为n <= 0的时候没有return 0 它就会return None

哈岁NB 发表于 2021-1-29 11:17:13

yuxijian2020 发表于 2021-1-29 11:15
因为n

明白了,感谢感谢

°蓝鲤歌蓝 发表于 2021-1-29 11:18:28

补充楼上说的,sum(n-1)
递归到 n - 1 < -1,即 n < 0 的时候,函数返回的是 None,而 None 与 整型相加是不行的,所以报错

哈岁NB 发表于 2021-1-29 11:23:41

°蓝鲤歌蓝 发表于 2021-1-29 11:18
补充楼上说的,
递归到 n - 1 < -1,即 n < 0 的时候,函数返回的是 None,而 None 与 整型相加是不行的 ...

明白了,感谢感谢

天下有雪 发表于 2021-1-29 16:52:12

学习了。

嘉岳呀 发表于 2021-1-30 14:33:04

建议以后改成问题帖
页: [1]
查看完整版本: Python递归