python_递归_斐波那契
什么是递归算法?
-- 函数自己调用自己本身
-- 本质上return返回的时候,总是把一个参数传入到自己函数本身,让函数反复调用下去
递归有何特点?
-- 必有一个结束条件
没有结束条件,递归就没有任何意义,python中默认只能999层递归
递归过多栈溢出,报错
-- 效率不高
相对而言,对于正向递归,递归次数和循环次数一致,没有区别
对于逆向递归,要递归到最后才能得到确定的值,然后从最底层返回
一次是递归到结束值,一次从结束值返回到初始值
--
如何正向递归实现斐波那契数列?
#!/usr/bin/python3 __author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/' list_fab = [1, 1] # 定义接收值的列表 def fab(u, n_1, n_2): # u表示获取几个fab值
n_3 = n_1 + n_2 # n_3 每次都等于前面两个数之和
print(n_1, n_2, n_3) # 打印每次递归这3个值
list_fab.append(n_3) # 把每次递归得到的n_3值添加列表中
if u == 1: # 设置结束条件,把列表返回回去,本质上也是递归深度
return n_3 # 返回最后一个值
return fab(u-1, n_2, n_3) # 本质上还是实现了往后移一位,递归深度为u if __name__ == '__main__':
result = fab(10, 1, 1) # 传入初始值
print(result) # 本质上就包含初始值1,1 ,list_fab中有u+2个值,但是添加进去只有u个值
print(list_fab) # 打印结果
如何逆向递归实现斐波那契数列?
#!/usr/bin/python3 __author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/' list_fab = [] # 定义接收值的列表 def fab(n_3, n_2):
n_1 = n_3 - n_2 # n_1 每次都等于 n_3 - n_2
print(n_1, n_2, n_3) # 打印每次递归这3个值
list_fab.insert(0, n_1) # 把每次递归得到的n_1值添加列表中最前面
if n_1 == 1: # 设置递归结束返回条件
return 1 # 返回最后一个值
return fab(n_2, n_1) # 本质上实现了 n_2 = n_3 , n_1 = n_2,逆向移动了一位 if __name__ == '__main__':
result = fab(144, 89) # 传入初始值
print(result) # 打印递归最后返回的参数
print(list_fab)
python_递归_斐波那契的更多相关文章
- python_实现_斐波那契额函数
在学递归的时候,用递归实现了一个 下面是代码 def fib(n): if n >= 3: return fib(n-1)+fib(n-2) else: return 1 print(fib(6 ...
- Python_案例_斐波那契数
方法一: 1 #!/usr/bin/python3 2 3 # Fibonacci series: 斐波纳契数列 4 # 两个元素的总和确定了下一个数 5 a, b = 0, 1 6 while b ...
- php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)
php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...
- Python递归及斐波那契数列
递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可 ...
- 【递归】斐波那契数列第n个数
递归.递推计算斐波那契数列第n项的值: #include <stdio.h> long long fact(int n); //[递推]计算波那契数列第n个数 long long fact ...
- Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器
一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...
- python递归与非递归实现斐波那契数列
1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). 递归实现: class Solution(): def Fibnacci(self ...
- Go指南练习_斐波纳契闭包
源地址 https://tour.go-zh.org/moretypes/26 一.题目描述 让我们用函数做些好玩的事情. 实现一个 fibonacci 函数,它返回一个函数(闭包),该闭包返回一个斐 ...
- scala -- 递归 实现 斐波那契函数
求一个起始为0,1,1,2,3的斐波那契序列 def main(args: Array[String]): Unit = { def fib(n: Int): Int = { if (n == 1) ...
随机推荐
- ES6小点心之通用弹窗
小点心,顾名思义,开箱即食,拿来即用. 前端业务逻辑主要分为[交互效果]和[数据展示]两方面.数据展示可使用 MVVM 框架来实现.前端的交互效果常用的也就那么几种,比如弹窗,楼层定位,倒计时,下拉刷 ...
- 运用OpenMP提速图像处理速度
一.算法测试 // openmptest的测试程序#include "stdafx.h"void Test(int n){ for (int i=0;i<10000;i ...
- islider结合react的简单实用
我用islider都是结合react来使用,主要运用在移动端,做首页轮播图,或者是手机图片预览,左右滑动 首先需要 npm install islider.js --save 让后在jsx文件头部引入 ...
- 支付宝pc网页支付
本文讲解如何在pc网页上完成支付宝的支付功能, 详细讲解了支付宝的配置信息,项目如何使用配置信息等, 本项目中代码可以直接运行, 也可以将代码迁移至你自己的项目中直接使用. 注意: 下面讲解的功能只能 ...
- 如何在vue-cli webpack中全局引入jquery
1.首先执行:npm install jQuery --save-dev,在package.json里加入jQuery. 2.修改build下的webpack.base.conf.js 方法一: 首 ...
- Angular整合zTree
1 前提准备 1.1 新建一个angular4项目 参考博文:点击前往 1.2 去zTree官网下载zTree zTree官网:点击前往 三少使用的版本:点击前往 2 编程步骤 从打印出zTree对象 ...
- eclipse安装java web插件
1 查看eclipse版本 找到eclipse的安装目录,找到readme文件,打开其中的html文件,我的是4.6版本的,代号是oxygen 2 安装 打开eclipse,点击help-Instal ...
- [51nod][cf468D]1558 树中的配对
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1558 不是很懂dalao们用线段树是怎么写的…… 反正找出重心以后每个子 ...
- A Bug's Life(种类并查集)(也是可以用dfs做)
http://acm.hdu.edu.cn/showproblem.php?pid=1829 A Bug's Life Time Limit:5000MS Memory Limit:327 ...
- JFinal极速开发框架使用笔记(三) 分析Model和ActiveRecord
JFinal框架的一些新发现的用法: 在JFinal框架中,实体类并不需要设置属性,更不需要配置getset方法就可以很方便的操作数据库,如果需要设置或者获取属性,可以直接使用一下方式: User u ...