斐波拉契数列(Fibonacci) 的python实现方式
第一种:利用for循环
利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了。。。
>>> fibs = [0,1]
>>> for i in range(8):
fibs.append(fibs[-2] + fibs[-1]) >>> fibs
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
或者说输入一个动态的长度:
fibs = [0,1]
num = input('How many Fibonacci numbers do you want?')
for i in range(num-2):
fibs.append(fibs[-2] + fibs[-1])
print (fibs)
第二种:利用函数
函数1:
>>> def fibs(num):
result = [0,1]
for i in range(num-2):
result.append(result[-2] + result[-1])
return result >>> fibs(10)
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
函数2:
def fibs(n):
a,b = 0,1
while a < n:
print (a)
a,b = b,a+b
或者是下面这种形式:
def fibs(max):
n,a,b = 0,0,1
while n < max:
print (a)
a,b = b,a+b
n = n + 1
return 'done'
增加一个max,就可以使相加的次数与传入的参数max相一致,比如输入10,a+b就会相加10次,然后结束循环。如果不用max的形式,只有一个while a < n ,那么到a < n 的时候就会结束循环,因为a不断的在变成b,所以肯定不是每次有增加1,。
函数3:
def fibs(n):
a,b = ,
result = []
while a < n :
result.append(b)
a,b = b,a + b
return result
函数2和函数3差不多,函数2是每增加一个数就打印出来了,函数3是每增加一个数就加到result里面,最后输出result。
函数4:利用递归
def fab(n):
if n==1:
return 1
if n==0:
return 0
else:
result=int(fab(n-1))+int(fab(n-2))
return result
精简代码后如下:
def fibs(n):
if n == 0 or n == 1:
return 1
else :
return fibs(n-1) + fibs(n-2)
头一次领略到python代码的简略。。 但是我对递归还有有点晕晕的。。。。。
测试代码如下:
for i in range(10):
print fibs(i)
斐波拉契数列(Fibonacci) 的python实现方式的更多相关文章
- Go斐波拉契数列(Fibonacci)(多种写法)
1 前言 斐波拉契数列有递归写法和尾递归和迭代写法. 2 代码 //recursion func fib(n int) int{ if n < 2{ return n }else{ return ...
- python的生成器(斐波拉契数列(Fibonacci))
代码: 函数版本: #斐波拉契数列(Fibonacci) def fib(max): n=0 a,b=0,1 while n < max: a,b = b,a+b n = n+1 return ...
- python学习笔记之斐波拉契数列学习
著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 如果用Python的列表生成式, ...
- 关于斐波拉契数列(Fibonacci)
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10 ...
- python实现斐波那契数列(Fibonacci sequence)
使用Python实现斐波那契数列(Fibonacci sequence) 斐波那契数列形如 1,1,2,3,5,8,13,等等.也就是说,下一个值是序列中前两个值之和.写一个函数,给定N,返回第N个斐 ...
- 斐波拉契数列(用JavaScript和Python实现)
1.用JavaScript 判断斐波拉契数列第n个数是多少 //需求:封装一个函数,求斐波那契数列的第n项 //斐波拉契数列 var n=parseInt(prompt("输入你想知道的斐波 ...
- python 斐波拉契数列数列
'''斐波拉契数列'''def Fibonacci(n): first, next = 0, 1 i = 0; while i < n: print next first, next = nex ...
- 实现斐波拉契数列的四种方式python代码
斐波那契数列 1. 斐波拉契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引 ...
- python练习题-打印斐波拉契数列前n项
打印斐波拉契数列前n项 #encoding=utf-8 def fibs(num): result =[0,1] for i in range(num-2): result. ...
随机推荐
- xdebug断点调试原理
通过Xdebug进行远程调试时,PHPSTORM等IDE会监听Xdebug设置的调试ip和端口(php.ini中配置) [xdebug] ; Xdebug zend_extension=php_xde ...
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用"好莱坞原则"是应用程序以被动的方式实现对流程的定制.我们可以采用若干设计 ...
- Android属性动画
这几天看郭神的博客 Android属性动画完全解析(上),初识属性动画的基本用法之后,我自己突然想实现一种动画功能,就是我们在携程网.阿里旅行等等手机APP端买火车票的时候,看到有选择城市,那么就有出 ...
- Java 特定规则排序-LeetCode 179 Largest Number
Given a list of non negative integers, arrange them such that they form the largest number. For exam ...
- Write thread-safe servlets [reproduced]
If you write Web applications in Java, the servlet is your best friend. Whether you write Java Serve ...
- 看我是如何处理自定义线程模型---java
看过我之前文章的园友可能知道我是做游戏开发,我的很多思路和出发点是按照游戏思路来处理的,所以和web的话可能会有冲突,不相符合. 来说说为啥我要自定义线程模型呢? 按照我做的mmorpg或者mmoar ...
- Python黑帽编程 3.4 跨越VLAN
Python黑帽编程 3.4 跨域VLAN VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理 ...
- struts2类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概念除了用 ...
- SpringMVC启动过程详解(li)
通过对SpringMVC启动过程的深入研究,期望掌握Java Web容器启动过程:掌握SpringMVC启动过程:了解SpringMVC的配置文件如何配置,为什么要这样配置:掌握SpringMVC是如 ...
- Canvas的width,height 和 样式中Canvas的width,height
控制Canvas的大小,有两种方式: 1:直接设置Canvas标签上的书width,height属性值; 2:通过Css设置Canvas的width,height; 这两种方式,区别是很大的. 1:C ...