python递归函数步骤_Python中的递归函数

本文介绍了Python中递归函数的概念和使用,包括直接和间接递归调用,并通过阶乘函数展示了递归的过程。强调了递归必须有明确的结束条件以防止无限循环。此外,还探讨了递归在二分查找算法中的应用。
摘要由CSDN通过智能技术生成

函数递归:函数的递归调用,即在函数调用的过程中,又直接或间接地调用了函数本身

# 直接调用

# def foo():

# print('from foo')

# foo()

#

# foo()

# 间接调用

# def bar():

# print('from bar')

# foo()

#

# def foo():

# print('from foo')

# bar()

#

# foo()

在使用递归时,需要注意以下几点:

递归就是在过程或函数里调用自身

必须有一个明确的递归结束条件,称为递归出口。

注意: 切勿忘记递归出口,避免函数无限调用。

递归的经典案例

>>> def factorial(n):

... if n == 1:

... return 1

... else:

... return n * factorial(n - 1)

...

>>>

>>> factorial(1)

1

>>>

>>> factorial(5)

120

>>>

>>> factorial(10)

3628800

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

当使用正整数调用 factorial() 时,会通过递减数字来递归地调用自己。

为了明确递归步骤,对 5! 进行过程分解:

factorial(5) # 第 1 次调用使用 5

5 * factorial(4) # 第 2 次调用使用 4

5 * (4 * factorial(3)) # 第 3 次调用使用 3

5 * (4 * (3 * factorial(2))) # 第 4 次调用使用 2

5 * (4 * (3 * (2 * factorial(1)))) # 第 5 次调用使用 1

5 * (4 * (3 * (2 * 1))) # 从第 5 次调用返回

5 * (4 * (3 * 2)) # 从第 4 次调用返回

5 * (4 * 6) # 从第 3次调用返回

5 * 24 # 从第 2 次调用返回

120 # 从第 1 次调用返回

1

2

3

4

5

6

7

8

9

10

当数字减少到 1 时,递归结束。

二分法:

二分查找

nums=[1,3,7,11,22,34,44,55,66,77,88,99,111,222,333,444]

# for item in nums:

# if item == 10:

# print('find it')

# break

# else:

# print('not exist') #这种占用大量内存,不推荐,效率低下

def search(search_num,nums):

print(nums)

if len(nums) == 0:

print('not exists')

return

mid_index=len(nums) // 2

if search_num> nums[mid_index]:

nums=nums[mid_index+1:]

search(search_num,nums)

elif search_num

nums=nums[:mid_index]

search(search_num,nums)

else:

print('find it')

search(31,nums) #二分法

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值