递归函数不返回预期结果

时间:2014-05-15 14:22:30

标签: python recursion

我正在练习递归编程......我正在用Python测试这段代码:

def sum(f,a, b):
    def iter(a, result):
        if (a>b):
            print result
            return result
        else: iter(a+1, result+a)
    return iter(a, 0)

id = lambda x: x

def sumInts(a, b): return sum(id, a, b)

print sumInts(1,10)

printout是None ...调试它,我发现var:result在返回最后一个循环之前计算int的总和,但是从函数返回的值是None ...

失败了什么? ---只是学习Python,所以,请和我好,谢谢

2 个答案:

答案 0 :(得分:2)

else: iter(a+1, result+a)

应该是

else: return iter(a+1, result+a)

Python中没有隐式返回。

答案 1 :(得分:0)

你错过了一份回复声明:)

def sum(f,a, b):
    def iter(a, result):
        if (a>b):
            print result
            return result
        else:
            # Need a return here
            return iter(a+1, result+a)
    return iter(a, 0)

id = lambda x: x

def sumInts(a, b):
    return sum(id, a, b)

print sumInts(1,10)