实现一个功能:计算一个数字的阶乘
先上代码:
"=====计算阶乘====="
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
可以看到我计算的是 5 的阶乘 结果为 120
代码虽然简单 但对于刚刚接触的小伙伴 有个点需要注意
在这里 当循环到 n=1 的时候
直接进入到 if语句 然后return 1
此时 需要注意 函数 factorial 并不是直接将1返回 跳出函数
而是 factorial(1) 此时为1 然 还没有结束
接着 进入到函数的 else 部分
本来按照 if else的规则 执行了 if语句就应该不会执行else了
但这里 不一样
因为这是“函数” 递归
代码就会跳到 else 语句
这时 若认为 n=1 return n*factorial(n - 1) 直接就返回了 0 的话 那就错了
因为在执行到 if 语句的时候 factorial()函数的值就已经为1了
所以此时这个语句应该等价为 n *factorail(1)
所以最后 return 返回 120 * 1 结果就为 120
附上一张函数递归的流程图
以上内容 仅供参考 如有不当之处 欢迎指出