码迷,mamicode.com
首页 > 其他好文 > 详细

L3.九.递归

时间:2018-11-17 14:35:55      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:factorial   递归   思路   int   内存   开始   阶乘   三次   tor   

# 递归  recursion
### 引题 计算10的阶乘

a = 1
for i in range(1,11):
a *= i
print(a)


# 换一种思路 递归
# 列如算 5!
# 5! = (1*2*3*4)*5 = 4!* 5
# 4! = (1*2*3) * 4 = 3! * 4
# 3! = (1*2) * 3 = 2! * 3
# 所以 5! = (((1! * 2)* 3)* 4) * 5
# 所以 n! = (n-1)! * n n>=2
# 结论: f(n) = f(n-1) * n n>=2


def factorial(n):
if n == 1:
return 1
return factorial(n-1) * n

print(factorial(10))


# 分析,当factorial(5)开始调用时
# 表达式变化为 第一次函数返回值 f(4) * 5
# 表达式变化为 第二次 (f(3)*4)* 5
# 表达式变化为 第三次 ((f(2)*3)*4) * 5
# 表达式变化为 第四次 (((f(1)*2)*3)*4) * 5
# 表达式变化为 第五次 (((1*2)*3)*4) * 5

# 可能出现的错误:超出最大递归深度 RecursionError: maximum recursion depth exceeded
# 递归深度;递归需要函数调用自身,调用一次函数实际会调用多次函数,每调用一次称为深度加1,都会增加系统内存开支,所以python规定了最大深度

# 递归的好处: 一些问题用循环难以解决,递归思维教自然可以方便解决。

L3.九.递归

标签:factorial   递归   思路   int   内存   开始   阶乘   三次   tor   

原文地址:https://www.cnblogs.com/psy0508/p/9973557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!