函数之递归

Python递归详解
本文深入探讨了Python中的递归概念,包括递归的基本原理、如何设置递归深度、递归的应用场景如斐波那契数列和二分查找,以及递归的效率问题和尾递归的特点。
import sys       调包
print(sys.getrecursionlimit()) #查询递归层数
sys.setrecursionlimit(2000) #定义递归层次
def func(x):
print(x)
func(x+1)
func(1)

# 递归就是在函数内部无限调用自己 但是python为了不让内存撑爆 默认递归层次为1000次




2:

def func(x):  #递归可以用来进行斐波那契 二分查找,汉诺塔  等等
x //= 2
print(x)
if x==0:
return
func(x)
print(x) #递归在每一次执行完时只要不遇见return 在‘return’之前的数据还会在内存里 在内部的调用结束后会一层层的退出
func(10)
1;递归进行时之前必须给它一个停止的条件,否则会撑爆系统
2:递归次数越多,相对层次会越减少
3:递归效率不高,递归层次越深会导致栈的溢出





#递归阶乘:
def func(n):
if n==1:
return 1
return n * func(n-1)
print(func(4))


#这里传入n=4 然后条件不满足,开始返回 但是在返回中遇见递归调用,依次把n的每次的递归的层次的n分别赋予3,2,1,当n==1把n返回给了‘func()’这是开始向外返回倒数第二次n==2‘此时func()==1‘, 2*1,3*2,4*6 这里分别把每次向外返回的相乘的值给了’func()‘。
 尾递归:
def func(n):
  print(n)
  return func(n+1)
func()
#在’c‘语言里面尾递归会把每次的运行结果摈弃 而python却依然会存入’栈‘中 但是’js‘会类似于’c‘

转载于:https://www.cnblogs.com/yuexijun/p/9998209.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值