斐波那契数列(Fibonacci)的递归与非递归实现

费波那契数列由0和1开始,之后的数就由之前的两数相加 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584,……….

递归算法

用递归算法来求值,非常好理解.伪代码:

f(n) = 0                      (n=0)
f(n) = 1 (n=1)
f(n) = f(n-1) + f(n-2) (n>1)

代码实现:

def f(n):
if n==0:
return 0
elif n==1:
return 1
elif n>1:
return f(n-1) + f(n-2)

非递归算法

def f(n):
if n == 0:
return 0
if n == 1:
return 1
if n>1: prev = 1 #第n-1项的值
p_prev = 0 #第n-2项的值
result = 1 #第n项的值 for i in range(1,n):
result = prev+p_prev
p_prev = prev
prev = result
return result

Recursing 递归 最大的好处就简化代码,他可以把一个复杂的问题用很简单的代码描述出来。注意:递归的精髓是描述问题,而这正是函数式编程的精髓。

最新文章

  1. OpenStreetMap/Google/百度/Bing瓦片地图服务(TMS)
  2. Sql语句批量更新数据(多表关联)
  3. 简单的Ajax例子
  4. Css 描点
  5. 注册界面设计及实现之(三)SharedPerferences实现数据暂存
  6. 实时 Django 终于来了 —— Django Channels 入门指南
  7. JDK+Tomcat搭建JSP运行环境--JSP基础
  8. 【转】python time模块详解
  9. 解析XML的方法
  10. 全排列hash-康拓展开
  11. 修饰符-static
  12. TeamCity 创建docker构建步骤
  13. matlab 小波工具箱
  14. mooc《数据结构》 习题1.8 二分查找
  15. Android View体系(六)从源码解析Activity的构成
  16. select * from dim.dim_area_no@to_dw
  17. JavaScript中的类(class)、构造函数(constructor)、原型(prototype)
  18. CXF wsdl2java (转载)
  19. 个人网站搭建时linux中的相关配置记录(mysql,jdk,nginx,redis)
  20. head 命令(转)

热门文章

  1. iWeb峰会(HTML5峰会)2015年7月19日上海站会后感想
  2. 【jQuery】复选框的全选、反选,推断哪些复选框被选中
  3. Launcher知识的demo,手机管家小伙家与悬浮窗
  4. Vue.js 基本语法
  5. Java并发编程实践读书笔记(2)多线程基础组件
  6. java爬虫简单实现
  7. 《分布式系统原理介绍》【PDF】下载
  8. 《Spark大数据处理:技术、应用与性能优化》【PDF】 下载
  9. Python 3.6.3 利用 Dlib 19.7 和 opencv 实现人脸68点定位 进行人脸识别
  10. 转战Hexo