python 3 递归调用与二分法
2024-08-29 19:49:16
递归调用与二分法
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)
最新文章
- 初见SpringMVC
- Qt for Android开发环境搭建及测试过程记录
- sklearn学习笔记1
- vs.php调试php使用外部的apache进行调试
- HD OJ2023
- [Oracle] Oracle和SQLServer的数据类型比较
- 利用ajax获取到的网页源码不能执行js代码
- shell编程的一些例子5
- Mysql 5.6主从同步配置与解决方案
- 页面按F5重复提交数据解决方法
- Shell脚本,自动化发布tomcat项目【转载】
- Spring装配bean--01组件扫描和自动装配
- 在Ubuntu终端彻底删除软件
- CentOS修改系统时间
- 归并排序及优化(Java实现)
- 0417 jQuery基础知识
- asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程
- 获取clock ticks per second
- CSS3属性上调
- [Java核心技术笔记]并发