两种方法递归斐波那契数列

__author__ = ‘hechangting‘
#ecoding=utf-8
import itertools
#迭代器
class Fib:
    def __init__(self):
        self.prev = 0
        self.curr = 1

    def __iter__(self):
        return self

    def __next__(self):
        value = self.curr
        self.curr += self.prev
        self.prev = value
        return value

#生成器
class fib1:
    def fib(self,times):
        n=0
        a,b=0,1
        while n<times:
            yield b
            a,b=b,a+b
            n+=1
        return ‘done‘

for n in fib1().fib(5):
    print(n)
print("="*50)

f=Fib()
print(list(itertools.islice(f,0,2)))

  

原文地址:https://www.cnblogs.com/HCT118/p/8466114.html

时间: 2024-11-08 23:41:47

两种方法递归斐波那契数列的相关文章

Python 两种方式实现斐波那契数列

斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368...... 这个数列从第3项开始,每一项都等于前两项之和. 递归的方式实现: def fn(n): if n==1: return 1 elif n==2: return 1 else: return fn(n-1)+fn(n-2) n=int(input())

C# 4种方法计算斐波那契数列 Fibonacci

F1: 迭代法 最慢,复杂度最高 F2: 直接法 F3: 矩阵法 参考<算法之道(The Way of Algorithm)>第38页-魔鬼序列:斐波那契序列 F4: 通项公式法 由于公式中包含根号5,无法取得精确的结果,数字越大误差越大 1 using System; 2 using System.Diagnostics; 3 4 5 namespace Fibonacci 6 { 7 class Program 8 { 9 static void Main(string[] args) 1

用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现)

费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数.斐波那契数列.费氏数列.黄金分割数列. 在数学上,费波那契数列是以递归的方法来定义: {\displaystyle F_{0}=0} {\displaystyle F_{1}=1} {\displaystyle F_{n}=F_{n-1}+F_{n-2}}(n≧2) 用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出.首几个费波那契系数是: 0, 1, 1, 2, 3

基础递归 - 斐波那契数列

[题目描述] 求斐波那契数列的第n项. [算法分析] 这篇博文主要面对新人学习,求dalao不打. 相信主函数那一块大家都会写,声明变量,输入变量,打印结果即可. 所以求值的函数就是我们深究的内容. 这图应该不必解释. 没有结束条件你就死循环了. 斐波那契数列函数的分析. [参考代码] #include <iostream> using namespace std; int fbnq(int); int main() { int n; cin>>n; cout<<fbn

两种JS方法实现斐波那契数列

第一种方法:递归 function fibonacci(n){ if (n==0){ return 0; }else if (n==1){ return 1; } return fibonacci(n-1)+fibonacci(n-2); } 网上现有的方法是: function fibonacci(n){ if (n==1||n==2){ return 1; } return fibonacci(n-1)+fibonacci(n-2); } 这样做有个不足之处,n取值必须大于0. 第二种方法:

java输出斐波那契数列

题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) //Java编程:三种

快速幂--斐波那契数列

1)编写程序,求解a^b.其中b是正整数. 方法1. //一般求幂算法,O(r) public static long power1(int a,int r){ if(r<0) { System.out.println("r must be positive number!"); return -1; } if(r==0){ return 1; } long res=1; for(int i=1;i<=r;++i){ res*=a; } return res; } 这种使用

递归总结及斐波那契数列的实现

优点:递归给某些编程问题提供了简单的方法 缺点:有缺陷的递归会很快耗尽计算机的资源,递归的程序难以理解和维护 杀毒软件会全盘扫描文件,其中就应用了递归 斐波那契数列的实现如下 #include<stdio.h> int fib(int n) { if(n == 1) return 1; if(n == 2) return 2; if(n > 2) //此行可省略 return fib(n - 1) + fib(n - 2); //返回第三个数 ,有返回值不能用void } int mai

面试官问你斐波那契数列的时候不要高兴得太早

前言 假如面试官让你编写求斐波那契数列的代码时,是不是心中暗喜?不就是递归么,早就会了.如果真这么想,那就危险了. 递归求斐波那契数列 递归,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法.斐波那契数列的计算表达式很简单: 1F(n) = n; n = 0,12F(n) = F(n-1) + F(n-2),n >= 2; 因此,我们能很快根据表达式写出递归版的代码: 1/*fibo.c*/ 2#include <stdio.h> 3#include <stdlib.h&