006.递归和分治思想
为什么80%的码农都做不了架构师?>>>
斐波那契数列的递归实现

迭代实现

递归


1.递归
定义
迭代使用的是循环结构。
递归使用的是选择结构。
优点
使用递归能使程序:
1.结构更清晰
2.更简洁
3.更易让人理解
从而减少读懂代码的时间。
缺点
大量的递归调用会:
1.建立函数的副本,会消耗大量的时间和内存
而迭代则不需要此种付出。
递归函数分为:调用和回退阶段。递归的回退顺序是它调用顺序的逆序。
递归案例1:

递归案例2


2.分治思想
1.折半查找算法的递归实现(二分法查找)
迭代:
#!/usr/bin/python
# coding=utf8def binSearch(a,m):low = 0 high = len(a) - 1 while(low <= high):mid = (low + high)/2midval = a[mid]if midval < m:low = mid + 1 elif midval > m:high = mid - 1 else:return a[mid], midreturn "不存在"if __name__ == "__main__":l = [0, 2, 5, 9, 10, 20, 30]result = binSearch(l, 10)print result
递归:
#!/usr/bin/python
# coding=utf8def binSearch(l, l_min, l_max, num):l_mid = (l_min+l_max)/2if l_min>l_max:return "不存在"elif l[l_mid] == num:return num, l_midelif l[l_mid]> num:return binSearch(l, l_min, l_mid-1, num)else:return binSearch(l, l_mid+1, l_max, num)l = [0, 2, 5, 9, 10, 20, 30]
result = binSearch(l, 0, len(l)-1, 10)
print result
2.汉诺塔的问题


X Y Z
64=63+1 (Z)
63=62+1 (Y)
...
3=2+1
3.大皇后问题


思路:
1.数组8*8的旗面
2.假设全部正确,打印结果。 row==8, col==8
3.加入不正确,那么判断不正确的标准? 抽象出来。
标准: 上/下/斜 方向不能出现同一直线上
转载于:https://my.oschina.net/repine/blog/689368
006.递归和分治思想相关推荐
- 递归和分治思想及其应用
目录 递归和分治思想 一些实例 逆序输出字符串 查找数组元祖是否存在 汉诺塔问题 八皇后问题 更多: 递归和分治思想 如果可以使用迭代,尽量别使用递归.由编译原理可以知道,每次自调用的时候,计算机都需 ...
- 第2章 递归与分治思想
第2章 递归与分治思想 文章目录 第2章 递归与分治思想 一.递归 1.1 例4 归并排序.快速排序 1.2 归并排序: 1.3 快速排序 1.4 小q的数列 1.5 树 二.分治 2.1 FBI树 ...
- 数据结构 - 迭代、递归和分治思想
栈和队列的应用 文章目录 栈和队列的应用 迭代-循环结构 递归-选择结构: 分治 迭代-循环结构
- 本文专注于lt;递归算法和分治思想[胖虎学习算法系列]
本文专注于<递归算法和分治思想> 初衷:博主看到网上有很多人贴出各种OJ上的AC代码,很多都会标注上"递归"两字 我刚开始学习递归算法和分治法的时候,苦于没有人写出递归 ...
- 分治思想应用:数学归纳法、递归、归并排序、MapReduce
跟黄申老师学数学系列02(python实现) 引言: 数学归纳法(Mathematical Induction).递归.归并排序(merge sort).MapReduce,这些方法或技术都基于一个重 ...
- 算法设计与分析第2章 递归与分治策略
第2章 递归与分治策略 2.1 递归算法 递归算法:直接或间接地调用自身的算法. 递归函数:用函数自身给出定义的函数.两个要素:边界条件.递归方程 优点:结构清晰,可读性强,而且容易用数学归纳法来证明 ...
- 相似算法比较:递归、分治、动态规划、贪心、回溯、分支限界
相似算法比较:递归.分治.动态规划.贪心.回溯.分支限界 在学习算法的过程中,递归.分治.动态规划.贪心.回溯.分支限界这些算法有些类似,都是为了解决大问题,都是把大问题拆分成小问题来解决,但她们 ...
- 计算机算法设计与分析之----- 递归与分治策略
递归与分治策略 [Master定理] 快速排序 优化 逆序对(归并算法) 火柴排队[NOIP2013 提高组] 集合求和 方法一: 递归 (2^n ) 方法二: 组合数学知识 [HNOI2008]越狱 ...
- sql表中只有子节点的递归_动态规划与静态规划、递归、分治、回溯
动态规划算是运筹学或者算法中的硬骨头了.不是说算法本身有多难,而是学完用完之后还是感觉到对其领会的不够深入,一种能用其术,不知其道的感觉.在很多教材或者回答中,经常看多将动态规划放在递归这一部分中.当 ...
最新文章
- jupyter !wget 等系统命令使用技巧
- iis下 ActiveSync插件无法访问(下)
- 自己整理的shell笔记
- 开源WebGIS实施方案(一):开篇 [转]
- ios编译与android编译区别是什么,为iOS和Android编译C ++代码(XCode)。 这是真的吗?...
- HDU5196--DZY Loves Inversions 树状数组 逆序数
- 第四章 治病法要(1)
- 现代分层、聚集聚类算法_分层聚类:聚集性和分裂性-解释
- CentOS7 下安装 Redis
- STM32CubeMx配置H7时钟: Frequency searched for is out of range for this vos range
- MIT 6.828 main.c文件分析
- 快速排序的C++实现
- 实用的才是最好的,教你如何以MATLAB的方式实现高等应用数学问题(一)
- linux虚拟键盘onboard设置,求助,安装屏幕虚拟键盘onboard出错。
- ftp-cmd常用命令
- 一位阿里P9的年薪和家庭资产
- 国潮复兴——从红旗H9看HMI设计中的东方美学
- android WebView多标签,加速解决卡顿,视频播放笔记
- 青帮大佬杜月笙的另一面及其后代现状
- tif文件转为shp文件_ArcGIS栅格数据与矢量数据的转换