Skip to main content
 首页 » 编程设计

python之python中的递归函数

2025年05月04日12zhoujg

我刚开始学习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 子句,因为那永远不会发生。)