6):题目:斐波那契数列。

    程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

    在数学上,费波那契数列是以递归的方法来定义:

F0 = 0     (n=0)
F1 = 1 (n=1)
Fn = F[n-1]+ F[n-2](n=>2)

    程序源代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*- def fib(n):
a,b = 1,1
for i in range(n-1):
a,b = b,a+b
return a # 输出了第10个斐波那契数列
print fib(10)

    第二个方法为:

#!/usr/bin/python
# -*- coding: UTF-8 -*- # 使用递归
def fib(n):
if n==1 or n==2:
return 1
return fib(n-1)+fib(n-2) # 输出了第10个斐波那契数列
print fib(10)

    以上实例输出了第10个斐波那契数列,结果为:

55

    如果你需要输出指定个数的斐波那契数列,可以使用以下代码:

#!/usr/bin/python
# -*- coding: UTF-8 -*- def fib(n):
if n == 1:
return [1]
if n == 2:
return [1, 1]
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs # 输出前 10 个斐波那契数列
print fib(10)

    以上程序运行输出结果为:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    使用数学的通项公式:

#!/usr/bin/env python
#coding:utf-8 # 输出第n个数 n = int(raw_input("第几个数: ")) # 斐波那契数列的通项公式
f =(1/(5**0.5))*(((1+(5**0.5))/2)**n - ((1-(5**0.5))/2)**n)
print "第%d个数:"%n,int(f) # 输出前n个数列:
l=[1]
for i in range(1,n+1):
f=(1/(5**0.5))*(((1+(5**0.5))/2)**i - ((1-(5**0.5))/2)**i)
l.append(int(f))
#!/usr/bin/python
# -*- coding: UTF-8 -*- def Fib(n):
a, b = 0, 1
while n:
a, b, n = b, a + b, n - 1
print(a)
Fib(7)
#!/usr/bin/env python
#coding:utf-8 #斐波拉契数列---使用生成器
def fib(max):
n,a,b = 0,0,1
while n < max:
yield b
a,b = b,a+b
n += 1
max = int(input('input max num :'))
for n in fib(max):
print(n)
#!/usr/bin/env python
#coding:utf-8 list = []
a = 1
list.append(a) # 第一个
b = 1
list.append(b) # 第二个
for i in range(1,20): # 再输出接下来的 19 个
    c = list[i-1]+list[i]
    list.append(c)
print list # 输出 21 个

    使用修饰器加上缓存:

#!/usr/bin/python3

from functools import lru_cache

@lru_cache(None)
def f(n):
assert n >= 0
return n if n <= 1 else f(n - 1) + f(n - 2) print(f(10))

    Python3 下参考方法:

#!/usr/bin/env python3
# -*- coding:utf-8 -*- class Fibs:
def __init__(self, n = 10):
self.a = 0
self.b = 1
self.n = n
self.i = 0
def __iter__(self):
return self
def __next__(self):
self.a, self.b = self.b, self.a+self.b
self.i += 1
if self.i > self.n:
raise StopIteration
return self.a
fibs=Fibs(10)
for i in fibs:
print (i)
#!/usr/bin/python
# -*- coding: UTF-8 -*- l=[0,1]
for i in range(10):
l.append(reduce (lambda x,y:x+y,l[-1:-3:-1]))
print l

    不得不说一句,例子的实现方式太多了,这些只是本人整理的一小部分,还有更多。。。

    如果感觉不错的话,请多多点赞支持哦。。。

# -*- coding: UTF-8 -*-

fe_list = [0, 1]
for i in range(1,11):
fe_list.append(sum(fe_list[(i-1):(i+1)])) print fe_list

原文链接:https://blog.csdn.net/luyaran/article/details/80017491

python2.7练习小例子(六)的更多相关文章

  1. python2.7练习小例子(十六)

    16):题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数.     程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'.     程序源代码: #!/u ...

  2. python2.7练习小例子(二十九)

        29):1.题目:按相反的顺序输出列表的值. #!/usr/bin/python # -*- coding: UTF-8 -*- a = ['one', 'two', 'three'] for ...

  3. python2.7练习小例子(十二)

        12):题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数" ...

  4. python2.7练习小例子(八)

        8):题目:输出 9*9 乘法口诀表.     程序分析:分行与列考虑,共9行9列,i控制行,j控制列.     程序源代码: #!/usr/bin/python # -*- coding: ...

  5. python2.7练习小例子(七)

        7):题目:将一个列表的数据复制到另一个列表中.     程序分析:使用列表[:].     程序源代码: #!/usr/bin/python # -*- coding: UTF-8 -*- ...

  6. python2.7练习小例子(二十七)

        27):题目:一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同.      #!/usr/bin/python # -*- coding: UTF-8 -* ...

  7. python2.7练习小例子(二十八)

    28):题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母.     程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...

  8. python2.7练习小例子(二十四)

        24):1.题目:利用递归方法求5!.     程序分析:递归公式:fn=fn_1*4! #!/usr/bin/python # -*- coding: UTF-8 -*- def fact( ...

  9. python2.7练习小例子(二十三)

        23):题目:求1+2!+3!+...+20!的和.     程序分析:此程序只是把累加变成了累乘. #!/usr/bin/python # -*- coding: UTF-8 -*- n = ...

  10. python2.7练习小例子(十八)

    19):题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程找出1000以内的所有完数.      #!/usr/bin/python # -*- ...

随机推荐

  1. Arcgis Javascript中geometryEngine报错’hq‘of undefined的解决方法

    这个问题困扰了我一个星期,原因是使用geomagicbuffer时候,有的线可正常使用,有的就直接报错,一直没有解决,后来发现是api自己的bug导致的 干脆直接读代码,在geometryEngine ...

  2. POJ-3484 Showstopper---二分+前缀和

    题目链接: https://cn.vjudge.net/problem/POJ-3484 题目大意: 给出一系列等差数列,给出第一项和最后一项和公差 这些等差数列中每个数出现的次数只有一个是奇数,找出 ...

  3. POJ-3267 The Cow Lexicon---删除字符匹配单词

    题目链接: https://cn.vjudge.net/problem/POJ-3267 题目大意: 题意就是给出一个主串,和一本字典,问最少在主串删除多少字母,可以使其匹配到字典的单词序列. PS: ...

  4. ACM-ICPC(10 / 10)——(完美世界2017秋招真题)

    今天学了莫比乌斯反演,竟然破天荒的自己推出来了一个题目!有关莫比乌斯反演的题解,和上次的01分数规划的题解明天再写吧~~~ 学长们都在刷面试题,我也去试了试,120分钟,写出6题要有一点熟练度才行.先 ...

  5. html题型

    1.doctype的意义是什么 这个是有历史背景的,在很久以前,IE有一些自己的渲染模式,最典型的就是盒子模型,包括边距.这就造成了不兼容模式,所以他的意义 1)让浏览器以标准模式渲染 2)让浏览器知 ...

  6. 编译安装PHP开发环境

    Linux 系统为 CentOS 7.2 1. 安装 Nginx 安装 Nginx 依赖包: # yum -y install zlib zlib-devel openssl openssl-deve ...

  7. shell小计

    NF 是每行的字段数  (NF==8)标识每行有8个字段,当前记录中的字段个数,就是有多少列NR 是总共读取了多少行 (NR==2)第二行的意思,已经读出的记录数,就是行号,从 1 开始 awk简单使 ...

  8. 2017.9.2Java中的自定义类型的定义及使用&&自定义类的内存图

    今日内容介绍 1.自定义类型的定义及使用 2.自定义类的内存图 3.ArrayList集合的基本功能 4.随机点名器案例及库存案例代码优化 01引用数据类型_类 * A: 数据类型 * a: java ...

  9. Android学习笔记_35_PopupWindow泡泡窗口的实现及GridView应用

    1.PopupWindow是一个可以显示在当前Activity之上的浮动容器,PopupWindow弹出的位置是能够改变的,按照有无偏移量,可以分为无偏移和有便宜两种:按照参照对象的不同又可以分为两种 ...

  10. 11java基础继承

    一.           继承相关   18.实现如下类之间的继承关系,并编写Music类来测试这些类. package com.hry.test; public class Instrument { ...