返回函数或值:递归python函数

时间:2016-07-12 19:06:58

标签: python recursion

是否有人愿意解释为什么第一个不起作用,但第二个呢?

在第一个函数中,函数计算最终的调整值......

# returns None
def _pareRotation(degs):
    if degs > 360:          
        _pareRotation(degs - 360)
    else:
        print "returning %s" % degs
        return degs

...但返回None

print _pareRotation(540)
>> returning 180
>> None

但是,如果我们稍微翻转一下并返回功能......

# returns expected results
def _pareRotation(degs):
    if degs < 360:          
        print "returning %s" % degs     
        return degs
    else:
        return _pareRotation(degs - 360)

......它按预期工作:

print _pareRotation(540)
>> returning 180
>> 180

大多数情况下,想知道导致None从递归循环中弹出的原因是什么?

2 个答案:

答案 0 :(得分:4)

在第一种情况下,您返回

def _pareRotation(degs):
    if degs > 360:          
        _pareRotation(degs - 360)
#      ^

答案 1 :(得分:0)

是的,你在第一种情况下没有回来,而且我认为它应该是%d,对于int。