斐波那契数列的Python实现

? 斐波那契数列的Python实现:递归实现、非递归实现、斐波那契数列生成器;
\[
\begin{equation}
F(n)=
\begin{cases}
n & n=0, 1\F(n-1) + F(n-2) & n > 1
\end{cases}
\end{equation}
\]



递归实现:

# python
def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)

非递归实现:

# python
def fib(n):
    if n <= 1:
        return n
    else:
        f1, f2, c = 0, 1, 0
        for i range(n-1):
            c = f1 + f2
            f1, f2 = f2, c
        return c

斐波那契数列生成器:

# python
def fib(n):
    a, b, iter = 1, 0, -1
    while iter < n:
        yield b
       # print(b)
        a, b = b, a+b
        iter += 1
for f in fib(10):
    print(f)

原文地址:https://www.cnblogs.com/chenzhen0530/p/10794528.html

时间: 2024-09-30 06:34:05

斐波那契数列的Python实现的相关文章

斐波拉契数列的python多种完美实现

强大,优雅,深入研究python后的重大发现.          让我们一起领略一下. 提到斐波拉契数列的实现,你可能首先会想到递归: def fibo(i): if i==0 or i==1: return 1 else: return fibo(i-1)+fibo(i-2) PS:递归有很多重复计算,比方说你计算f(5)时要去计算f(4)和f(3),而计算f(4)时又要去计算f(3),这样f(3)就重复计算了 完美实现方案一: 完美实现方案二: 完美实现方案三(参考python cookbo

vijos - P1543极值问题(斐波那契数列 + 公式推导 + python)

P1543极值问题 Accepted 标签:[显示标签] 背景 小铭的数学之旅2. 描述 已知m.n为整数,且满足下列两个条件: ① m.n∈1,2,-,K ② (n^ 2-mn-m^2)^2=1 编一程序,对给定K,求一组满足上述两个条件的m.n,并且使m^2+n^2的值最大.例如,若K=1995,则m=987,n=1597,则m.n满足条件,且可使m^2+n^2的值最大. 格式 输入格式 输入仅一行,K的值. 输出格式 输出仅一行,m^2+n^2的值. 样例1 样例输入1[复制] 1995

Python计算斐波那契数列

利用Python计算第一个达到一百万位数的斐波那契数列各位数之和 结果为4501552 以下是我用到的代码,不是中间需要一些人工操作来加快收敛性,有兴趣读者可以写代码加快收敛 首先执行这个,可以大致确定一百万个数所在斐波那契序列的位置 i=1 j=1 k=i+j count=3 while count<4850000: i=j j=k k=i+j count+=1 result=str(k) print('k长度') k_len=len(result) print(k_len) sum=0 fo

Python递归及斐波那契数列

递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理.于是,fact(n)用递归的方式写出来就是: def fact(

用递归方法计算斐波那契数列(Recursion Fibonacci Python)

先科普一下什么叫斐波那契数列,以下内容摘自百度百科: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因意大利数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,指的是这样一个数列:1.1.2.3.5.8.13.21.34...这个数列从第3项开始,每一项都等于前两项之和. 根据以上定义,用python定义一个函数,用于计算斐波那契数列中第n项的数字是多少: def fib_recur(n): if n==0 or n==1 : r

python实现斐波那契数列(Fibonacci sequence)

使用Python实现斐波那契数列(Fibonacci sequence) 斐波那契数列形如 1,1,2,3,5,8,13,等等.也就是说,下一个值是序列中前两个值之和.写一个函数,给定N,返回第N个斐波那契数字.例如,1返回1 6返回8 我选择了两种方法,一种是将list变成一个队列,另一个则是使用环形队列.不多说,直接上代码:后面我会对为什么这样实现做一个解释 第一个是使用队列的方式: 1 def fibonacciSeq(num): 2 fibonacciSeqList = [] 3 for

斐波那契数列(C++ 和 Python 实现)

(说明:本博客中的题目.题目详细说明及参考代码均摘自 "何海涛<剑指Offer:名企面试官精讲典型编程题>2012年") 题目 1. 写一个函数,输入 n, 求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: 2. 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级.求该青蛙跳上一个n级的台阶总共有多少种跳法? 3. 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级,...... ,也可以跳上n级,此时该青蛙跳上一个 n 级的台阶共有多少种跳法

两个关于数列的Python脚本(斐波那契数列和猴子吃香蕉类问题)

斐波那契数列(Fibonacci sequence),因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",又因其相邻两项的比无限接近黄金分割比例,所以又称为黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.34.--,即后一项是前两项的和. #!/usr/bin/python #coding:utf-8 #斐波那契数列 x=[0,1] for i in range(int(raw_input('请输入数

斐波拉契数列(用JavaScript和Python实现)

1.用JavaScript 判断斐波拉契数列第n个数是多少 //需求:封装一个函数,求斐波那契数列的第n项 //斐波拉契数列 var n=parseInt(prompt("输入你想知道的斐波那契数列的第几位数")); document.write(f(n)); function f(n){ if (n>=3) { var a=1; var b=1; for(var i=3;i<=n;i++){ var temp=b; b=a+b ; a=temp; } return b;