这是一个来自interactivepython.org的例子。我正在努力理解为什么函数以它的方式运行。我知道它为branchLen向前移动,然后右转20度。然后它自己调用并再次向前移动(这次是分支Len-15)和另一个右转。这样做直到branchLen小于5然后停止。那么该函数何时执行其余代码,例如左转?如果有人能按时间顺序向我解释函数的事件,我将非常感激。
import turtle
def tree(branchLen,t):
if branchLen > 5:
t.forward(branchLen)
t.right(20)
tree(branchLen-15,t)
t.left(40)
tree(branchLen-15,t)
t.right(20)
t.backward(branchLen)
def main():
t = turtle.Turtle()
myWin = turtle.Screen()
t.left(90)
t.up()
t.backward(100)
t.down()
t.color("green")
tree(75,t)
myWin.exitonclick()
main()
答案 0 :(得分:1)
def toZero(num):
num -= 1
if num == 0:
return
toZero(num)
num += 1
return num
def main():
num = toZero(3)
print num
if __name__ == '__main__':
main()
我建议你一个更简单的例子,例如尝试我的但是要注意我从来没有在python中编程它可能包含一些语法错误.. 感谢salman代码语法现在好了
并做一个跟踪
main:num = 3
|-> toZero(3)
|-> toZero(2)
|-> toZero(1)
|-> toZero(0)
|-> exit
*note: num++ <--|
<--|
<--|
<--|
*注意:当递归到达结尾时,函数堆栈从它们自己调用的点继续(因为它有结果并且可以继续)。 所以执行下一条指令(num ++)。
最终结果是...... 3