首页 > 解决方案 > printFun(1) 如何调用 printFun(2)?

问题描述

def printFun(test): 
    if (test < 1): 
        return
    else: 

        print( test, end = " ") 
        printFun(test-1) # statement 2 
        print( test, end = " ") 
        return
test = 3
printFun(test)

任何人都可以在致电后解释该算法的工作原理吗printFunc(0)

标签: pythonpython-3.xrecursion

解决方案


让我展开代码执行以了解递归:

调用 printFun(test=3):

inside printFun(test=3)
(test < 1) is False
print(test) # 3
calls printFun(test-1) # value 2

inside printFun(test=2)
(test < 1) is False
print(test) # 2
calls printFun(test-1) # value 1

inside printFun(test=1)
(test < 1) is False
print(test) # 1
calls printFun(test-1) # value 0

里面 printFun(test=0)
(test < 1) 是 True
退出 printFun(test=0)

print(test) # 1
退出 printFun(test=1)

print(test) # 2
退出 printFun(test=2)

print(test) # 3
退出 printFun(test=3)

所以输出应该是: 3 2 1 1 2 3 测试达到零后显示的后半部分(这会阻止递归更深)。

因此,要回答您的问题,printFun(1) 不会调用 printFun(2)。发生的情况是 printFun(1) 在其父 printFun(2) 之前完成执行。

希望这可以帮助!


推荐阅读