博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 3 递归调用与二分法
阅读量:6987 次
发布时间:2019-06-27

本文共 900 字,大约阅读时间需要 3 分钟。

递归调用与二分法

1、递归调用

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

示例:def age(n):    if n == 1:        return 18   # 结束条件    return age(n-1)+2   # 调用函数本身print(age(5))打印结果26

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

1 递推

2 回溯

示例图 

 

 

递归特性:

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)
View Code

 

转载于:https://www.cnblogs.com/qiangyuge/p/7277307.html

你可能感兴趣的文章
Confluence 6 升级自定义的站点和空间获得你的自定义布局
查看>>
Angular CLI 创建你的第一个 Angular 示例程序
查看>>
深入理解javascript原型和闭包(16)——完结
查看>>
近日记事2-PG库挂掉了,还是恢复吧~
查看>>
数据源ObjectDataSource的数据访问类的编写
查看>>
如何点击每一列的时候alert其index
查看>>
【原创翻译】类型
查看>>
深入解读Windows Azure VM 实例级 IP
查看>>
python常用函数
查看>>
Eclipse记录
查看>>
C++ 一个自己实现的字符串类
查看>>
KVM
查看>>
我的友情链接
查看>>
字节流
查看>>
大型网站架构演变和知识体系
查看>>
抛砖引玉:Session和Cookie在WEB开发中的最佳实践
查看>>
一次小***处理
查看>>
Nginx配置文件nginx.conf中文详解
查看>>
linux anaconda kickstart基础
查看>>
DITA vs DocBook
查看>>