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. 通过vue-cli3构建一个SSR应用程序

    1.前沿 1.1.什么是SSR SSR(服务端渲染)顾名思义就是将页面在服务端渲染完成后在客户端直接展示. 1.2.客户端渲染与服务端渲染的区别 传统的SPA模式 即客户端渲染的模式 Vue.js构建 ...

  2. Linux--LAMP平台搭建

    LAMP平台搭建 准备工作 rpm -e php php-cli php-ldap php-commn php-mysql --nodeps 删除php相关依赖软件 rpm -ivh zlib-dev ...

  3. 实验验证stack和heap中是否被设初值

    #include <iostream> #include <stdlib.h> using namespace std; class Foo { public: int i; ...

  4. std::string::find_last_not_of

    public member function <string> std::string::find_last_not_of C++98 C++11 string (1) size_t fi ...

  5. 在linux代码中打印函数调用的堆栈的方法

    之前一直有这样的需求,当时问到,也没搜到方法,现在竟然既问到了,也搜到了,哎,世事真是不能强求啊! 在Linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入: ...

  6. LeetCodeOJ刷题之15-16【3Sum(三数和问题)】

    本文为两个题:[三数和(3Sum)]与[最近三数和(3Sum Closest)]问题 第一部分分析3Sum问题,第二部分分析3Sum Closest问题,由于两个问题的思路很像,所以这里放到一起分析. ...

  7. Netbackup客户端安装网络放通端口需求,及测试网络放通方法

      192.168.1.101网络放通需求如下:   客户端主机 192.168.1.101 到 服务端主机 192.168.1.100 的1556.13720.13724.1378.13782这5个 ...

  8. vim 操作手册

    三种模式 编辑模式(i当前位置插入光标:a后一位置插入光标).控制模式(esc).可视模式(v). 编辑模式时可以正常输入. 控制模式是vim的核心,通过按键可以快速实现操作. 可视模式是进行选块操作 ...

  9. 【luogu P2731 骑马修栅栏】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2731 这个题是欧拉回路的模板题,那么在这里给出一个hierholzer的做法. 对于求欧拉回路的问题,有Fl ...

  10. scala容器使用

    花了两个小时左右,学习了一下scala语言, 由于scala运行在jvm之上, 可以使用java容器也可以使用scala自带的容器. import java.util import java.util ...