我刚开始学习python scheme。是否不允许像 sum+=alist[0]+sumup(alist[1:]) 这样的递归?我得到错误
TypeError: unsupported operand type(s) for +: 'int' and 'NoneType'
代码:
m=int(input())
c=list(map(int,input().split()))
x,y=map(int,input().split())
sum=0
def sumup(alist):
global sum
if alist==[]:
return 0
else:
if sum<x:
sum+=alist[0]+sumup(alist[1:])
elif sum>=x:
return sum
elif sum>y:
return 0
sumup(c)
请您参考如下方法:
您在 if sum <x: 中忘记了返回语句子句:
if sum<x:
sum+=alist[0]+sumup(alist[1:])
应该是
if sum<x:
sum+=alist[0]+sumup(alist[1:])
return sum
还有另一种情况 - 如果 sum <= y你没有返回任何东西。 (你可能想去掉 elif sum>y 子句,因为那永远不会发生。)
