python二分法递归_python-递归与二分法

1、递归调用

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

copycode.gif

示例:

def age(n):

if n == 1:

return 18 # 结束条件

return age(n-1)+2 # 调用函数本身

print(age(5))

打印结果

26

copycode.gif

递归的执行分为两个阶段:

1 递推

2 回溯

示例图

1196362-20170802230804100-630680499.jpg

递归特性:

1、必须有一个明确的结束条件

2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3、递归效率不高,因为每次调用自身时,都会在内存中创建一个新的内存空间,当不断循环调用非常多次时,是非常耗内存的。

2、二分法

主要应用于有序序列中,原理是每次查找都将原序列折半,逐渐缩小查找范围的一种算法。

例如查找一个数字,查找了打印 ‘find it’ 没有查到打印 'not exists'

l = [1,2,5,7,10,31,44,47,56,99,102,130,240]

def binary_search(l,num):

print(l)

if len(l) == 1:

if l[0] == num:

print('find it')

else:

print('not exists')

return

mid_index=len(l)//2

mid_value=l[mid_index]

if num == mid_value:

print('find it')

return

if num > mid_value:

l=l[mid_index:]

if num < mid_value:

l=l[:mid_index]

binary_search(l,num)

binary_search(l,31)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值