def factorial(n):
if n==0:
return 1
if n>=1:
return n*factorial(n-1)
print(factorial(4))
虽然这是一段很简单的代码,不过从前学习的时候经常对每一步的变化绕不过弯来,这次好好整理一下思路。
刚开始,我以为返回值直接就是4* 3* 2*1,但仔细一想,循环应该才这样吧,factorial(n-1)哪去了?实际上过程是这样的:
4!的递归调用过程:
4* factorial(3)
4* 3* factorial(2)
4* 32 factorial(1)
4* 3* 2* 1* factorial(0)
4* 3* 2* 1* 1
4* 3* 2* 1
4* 3* 2
4* 6
24
知道递归函数里面的参数为0时,不再递归,才一步一步返回相乘的结果,画图更为直观:
顺便一提,notablity的笔记变图片功能真是太鸡肋了