def move(n,a,b,c):
if n==1:
print(a,'----',c)
return
else:
move(n-1,a,c,b)
print(a,'----',c)
move(n-1,b,a,c)
print(move(3,'A','B','C'))
2.无返回值的return,作用是强制结束函数的调用过程,并且返回调用者现场
类似于break的作用
可以理解为强制结束当前调用并且返回之前调用完成的def的frame。

返回(2,A,C,B)是因为(2,A,C,B)这个frame是已经完成def调用的,(1,C,A,B)还在循环中没结束就return被强制结束了
所以return的是(2,A,C,B)
上图的(2,A,C,B)是上一次return回来的值并不是此次循环中上一次完成调用的def模块,所以return的是初次完成调用的(3,A,B,C),可以理解为程序的寄存器上会写上每次完成调用的过程,返回之后就把那次调用当作了一次新的输入。
理解的流程图
版权声明:本文为weixin_50920579原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。