Python函数执行 - 请求澄清

时间:2014-11-28 09:42:42

标签: python python-2.7

我通过查看一些网站和我的知识编写了一个下面的代码,而在输出方面,我几乎没有查询:

factorial (3)会将参数n=3传递给函数,其中n值不等于零,它应该到达程序的else部分并执行我的代码。在其他部分

我很困惑,为什么打印1作为第一个输出,然后是其他值?

def factorial(n):
    if n == 0:
        return 1
    else:
        recurse = factorial(n-1)
        result = n * recurse
    print result
    return result

输出:

>>> factorial(3)
1
2
6
6

1 个答案:

答案 0 :(得分:0)

else分支首先调用递归函数 ;这些递归调用也使用print

factorial(3)
    n = 3 -> else
    recurse = factorial(n - 1)
        n = 2 -> else
        recurse = factorial(n - 1)
            n = 1 -> else
            recurse = factorial(n - 1)
                n = 0 -> if
                return 1
            result = n * recurse -> 1 * 1
            print 1
            return 1
        result = n * recurse -> 2 * 1
        print 2
        return 2
    result = n * recurse -> 3 * 2
    print 6
    return 6

请注意print来电的顺序;一旦你点击n == 0,递归函数就会开始返回,你会得到一个print语句,然后是另一个return和另一个print等。