python之递归
来源:互联网 发布:阿里云 李津 编辑:程序博客网 时间:2024/06/17 17:22
递归
二分查找
递归是直接或者间接调用自身算法的过程,
特点:(1)在函数或者过程中调用自身。
(2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口。
(3)看起来简洁,但是执行效率非常低,不建议用来设计程序
(4)递归调用的过程中,系统为每一程的返回点,局部量等开辟了栈来存储,递归次数过多会造成栈溢出
要求
递归算法体现的“重复”一般有三个要求:
每次调用在规模上都会有所缩小,通常减半;
相邻两次重复之间有亲密的联系,前一次要为后一次做准备;
问题的规模极小时必须直接给出解答而不再进行递归调用,因此每次递归调用都是有条件的,无条件的递归将会造成死循环
实现
斐波那契数列0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
#!/usr/bin/env python# encoding: utf-8def func(arg1,arg2,stop): if arg1 == 0: print arg1,arg2 arg3 = arg1 + arg2 print arg3 if arg3 < stop: func(arg2,arg3,stop)func(0,1,610)
二分查找
#!/usr/bin/env python# encoding: utf-8def binary_search(data_source,find_n): mid = int(len(data_source)/2) if len(data_source) > 1: if data_source[mid] > find_n: # data in left print('data in left of %s '%data_source[mid]) binary_search(data_source[:mid],find_n) elif data_source[mid] < find_n: # data in right print('data in right of %s ' % data_source[mid]) binary_search(data_source[:mid],find_n) else: print('found find_s',data_source[mid]) else: print('cannot find....')if __name__ == '__main__': data = list(range(1,600,3)) print(data) binary_search(data,400)
0 0
- python之递归
- Python之递归
- Python递归之汉诺塔
- Python之递归函数
- Python学习笔记之递归
- python:递归函数之汉诺塔
- 9.Python入门之递归
- Python-开发之路-递归&反射
- python学习路之递归练习
- python学习(八)之递归函数
- python学习笔记之尾递归
- python之字典的嵌套,递归调用
- Python递归
- Python递归
- python递归
- Python | 递归
- Python 递归
- python 递归
- IOS开发学习笔记之调试
- 每天一题LeetCode[第十七天]
- apache常用配置
- 线性回归LR和局部加权线性回归LWLR算法简介
- [Android开发]Activity的四种启动模式及其应用场景
- python之递归
- 乒乓球对打的机器人
- LinkedHashMap源码分析与LRU实现
- SNR
- 利用JDK自带工具构建一个简单的Java SOAP Web Service
- js 单链表
- Xcode中的Group和fold的区别
- Android SlidingMenu
- 如何实现编译时注入