Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这个递归求和函数返回None?_Python_Recursion - Fatal编程技术网

Python 为什么这个递归求和函数返回None?

Python 为什么这个递归求和函数返回None?,python,recursion,Python,Recursion,在添加后插入“print sum1”表明sum1正在增加,所以我不理解为什么函数返回None。我能想到的唯一一件事是,在返回之前,sum1以某种方式被重置为0,但我不知道为什么会这样。您需要编写 def recursiveadd(x,sum1): if x > 0: sum1 += x recursiveadd(x-1,sum1) else: return sum1 print recursiveadd(100,0) 你需

在添加后插入“print sum1”表明sum1正在增加,所以我不理解为什么函数返回None。我能想到的唯一一件事是,在返回之前,sum1以某种方式被重置为0,但我不知道为什么会这样。

您需要编写

def recursiveadd(x,sum1):
    if x > 0:
        sum1 += x
        recursiveadd(x-1,sum1)
    else:
        return sum1

print recursiveadd(100,0)
你需要写作

def recursiveadd(x,sum1):
    if x > 0:
        sum1 += x
        recursiveadd(x-1,sum1)
    else:
        return sum1

print recursiveadd(100,0)

In [52]: def rec(x, sum = None):
if sum == None:
    sum = 0
if x > 0:
    sum += x
    return rec(x - 1, sum)
else:          
    return sum

In [52]: def rec(x, sum = None):
if sum == None:
    sum = 0
if x > 0:
    sum += x
    return rec(x - 1, sum)
else:          
    return sum

跟踪代码并查看返回的内容,重点是返回的内容。请注意,尾部递归可能会破坏python中的堆栈。@MattFenwick:您可以跟踪代码并查看返回的内容,重点是返回的内容。请注意,尾部递归可能会破坏python中的堆栈。@MattFenwick:您可以