为什么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.递归和分治思想相关推荐

  1. 递归和分治思想及其应用

    目录 递归和分治思想 一些实例 逆序输出字符串 查找数组元祖是否存在 汉诺塔问题 八皇后问题 更多: 递归和分治思想 如果可以使用迭代,尽量别使用递归.由编译原理可以知道,每次自调用的时候,计算机都需 ...

  2. 第2章 递归与分治思想

    第2章 递归与分治思想 文章目录 第2章 递归与分治思想 一.递归 1.1 例4 归并排序.快速排序 1.2 归并排序: 1.3 快速排序 1.4 小q的数列 1.5 树 二.分治 2.1 FBI树 ...

  3. 数据结构 - 迭代、递归和分治思想

    栈和队列的应用 文章目录 栈和队列的应用 迭代-循环结构 递归-选择结构: 分治 迭代-循环结构

  4. 本文专注于lt;递归算法和分治思想[胖虎学习算法系列]

    本文专注于<递归算法和分治思想> 初衷:博主看到网上有很多人贴出各种OJ上的AC代码,很多都会标注上"递归"两字 我刚开始学习递归算法和分治法的时候,苦于没有人写出递归 ...

  5. 分治思想应用:数学归纳法、递归、归并排序、MapReduce

    跟黄申老师学数学系列02(python实现) 引言: 数学归纳法(Mathematical Induction).递归.归并排序(merge sort).MapReduce,这些方法或技术都基于一个重 ...

  6. 算法设计与分析第2章 递归与分治策略

    第2章 递归与分治策略 2.1 递归算法 递归算法:直接或间接地调用自身的算法. 递归函数:用函数自身给出定义的函数.两个要素:边界条件.递归方程 优点:结构清晰,可读性强,而且容易用数学归纳法来证明 ...

  7. ​相似算法比较:递归、分治、动态规划、贪心、回溯、分支限界​

    相似算法比较:递归.分治.动态规划.贪心.回溯.分支限界 ​ 在学习算法的过程中,递归.分治.动态规划.贪心.回溯.分支限界这些算法有些类似,都是为了解决大问题,都是把大问题拆分成小问题来解决,但她们 ...

  8. 计算机算法设计与分析之----- 递归与分治策略

    递归与分治策略 [Master定理] 快速排序 优化 逆序对(归并算法) 火柴排队[NOIP2013 提高组] 集合求和 方法一: 递归 (2^n ) 方法二: 组合数学知识 [HNOI2008]越狱 ...

  9. sql表中只有子节点的递归_动态规划与静态规划、递归、分治、回溯

    动态规划算是运筹学或者算法中的硬骨头了.不是说算法本身有多难,而是学完用完之后还是感觉到对其领会的不够深入,一种能用其术,不知其道的感觉.在很多教材或者回答中,经常看多将动态规划放在递归这一部分中.当 ...

最新文章

  1. jupyter !wget 等系统命令使用技巧
  2. iis下 ActiveSync插件无法访问(下)
  3. 自己整理的shell笔记
  4. 开源WebGIS实施方案(一):开篇 [转]
  5. ios编译与android编译区别是什么,为iOS和Android编译C ++代码(XCode)。 这是真的吗?...
  6. HDU5196--DZY Loves Inversions 树状数组 逆序数
  7. 第四章 治病法要(1)
  8. 现代分层、聚集聚类算法_分层聚类:聚集性和分裂性-解释
  9. CentOS7 下安装 Redis
  10. STM32CubeMx配置H7时钟: Frequency searched for is out of range for this vos range
  11. MIT 6.828 main.c文件分析
  12. 快速排序的C++实现
  13. 实用的才是最好的,教你如何以MATLAB的方式实现高等应用数学问题(一)
  14. linux虚拟键盘onboard设置,求助,安装屏幕虚拟键盘onboard出错。
  15. ftp-cmd常用命令
  16. 一位阿里P9的年薪和家庭资产
  17. 国潮复兴——从红旗H9看HMI设计中的东方美学
  18. android WebView多标签,加速解决卡顿,视频播放笔记
  19. 青帮大佬杜月笙的另一面及其后代现状
  20. tif文件转为shp文件_ArcGIS栅格数据与矢量数据的转换

热门文章

  1. 【观点】“另类”设计模式
  2. 从 Domino 7.x 升级到 Domino 8.0.1 后服务器性能下降
  3. ASP.NET 例程完全代码版(3)——随意创建图形信息
  4. 重拾-Spring Transaction
  5. less及编译工具介绍
  6. 向公司讲述虚拟应用价值的技巧
  7. 初步学习JS中的闭包
  8. Gridview数据显示实现按日期排序分割线
  9. Android AM命令行启动程序的方法
  10. SQL2008修改并保存表结构时报错的解决(阻止保存要求重新创建表的更改)