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

时间:2012-02-01 16:44:29

标签: python recursion

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

print recursiveadd(100,0)

插入"打印sum1"添加后显示sum1正在增加,所以我不明白为什么函数返回None。我唯一能想到的是sum1在返回之前以某种方式重置为0,但我不知道为什么会这样。

2 个答案:

答案 0 :(得分:10)

你需要写

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

print recursiveadd(100,0)

答案 1 :(得分: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 [53]: rec(100)
Out[53]: 5050