Python精简入门学习之递归函数
-递归
递归满足的条件
自己调用自己
必须有一个明确的结束条件
优点:
逻辑点单、定义简单
缺点:
容易导致栈溢出 内存资源紧张 甚至内存泄漏
循环的方式去实现
def jiecheng(n):
result = 1
for item in range(1,n+1):
result *= item
pass
return result
print('5的阶乘{}'.format(jiecheng(5)))
# 递归方式实现
def diguiJc(n):
'''
递归实现
:param n:阶乘参数
:return:
'''
if n==1:
return 1
else:
return n * diguiJc(n - 1)
pass
# 递归调用
print('10的阶乘{}'.format(diguiJc(10)))
'''
思路:调用处为入口 此时n的值是10 进行判断 10是否等于1 不满足执行else的语句 返回n*diguiJc(n-1)
此时n的值为9 继续调用自身 直至满足第一个条件时直接返回1 就退出了空间开辟
'''
-递归
递归就是调用自身:
递:
简单来说就是俄罗斯套娃 一层又一层,你想要得到最里面的套娃那你就要一层一层的去打开 这里递
归就是这样的 不断的开辟空间调用自身。如同《盗梦空间》一样,梦中梦。
归:
当不满足继续开辟空间的条件时,就会返回参数,但是它不能直接返回,就和套娃一样你要返回原样得一层一层
的套回去,结果也得一层一层得往上传。如同《盗梦空间》一样,柯布最后梦醒了。
-如图所示
image.png
开辟空间(调用自身)-->关闭空间(参数传递)
必须要有一个明确的条件,不然无穷的开辟内存空间会导致堆栈溢出电脑慢到卡死。







网友评论