练习六:斐波那契数列(fibonacci)

题目:斐波那契数列。

程序分析:斐波那契数列(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)
---------------------
方法一:使用递归计算

 1 def fibonacci(month):
 2     if month == 1:
 3         return 1
 4     elif month == 2:
 5         return 1
 6     else:
 7         return fibonacci(month-1)+fibonacci(month-2)
 8
 9 a =fibonacci(35)
10 print(a)

方法二:利用while循环

 1 def fab(n):
 2     n1 = 1
 3     n2 = 1
 4     n3 = 0
 5     if n < 1:  #加条件判断,如果n<时,将直接返回-1
 6         return -1
 7     while (n-2) > 0:
 8         n3 = n1+n2
 9         n1 = n2
10         n2 = n3
11         n -= 1
12     return n3
13
14 n = fab(20)
15 print(n)

改要求为输出指定个数的斐波那契数列,只需要将结果返回到列表中,可直接计数

 1 def fib(n):
 2     if n == 1:
 3         return [1]
 4     if n == 2:
 5         return [1,1]
 6     fibs = [1,1]
 7     for i in range(2,n):
 8         fibs.append(fibs[-1]+fibs[-2])
 9     return fibs
10
11 print(fib(5))

原文地址:https://www.cnblogs.com/pinpin/p/9865066.html

时间: 2024-10-30 01:47:12

练习六:斐波那契数列(fibonacci)的相关文章

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

Java实现斐波那契数列Fibonacci

import java.util.Scanner; public class Fibonacci { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.println("斐波那契数列的个数是:"); int total=in.nextInt(); System.out.println("

poj3070_斐波那契数列(Fibonacci)

用矩阵求斐波那契数列,快速幂log(n),只用求最后4位(加和乘的运算中前面的位数无用) 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main() 5 { 6 /* 7 (x y)(x y)= (x*x+y*s x*y+y*t) =(x*x+y*s y*(x+t)) 8 (s t)(s t) (s*x+t*s s*y+t*t) (s*(x+t) t*t+y*s) 9 (x y)(a b)= (x*a+y*c x*b+y*d)

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

斐波拉契数列(Fibonacci) 的python实现方式

第一种:利用for循环 利用for循环时,不涉及到函数,但是这种方法对我种小小白来说比较好理解,一涉及到函数就比较抽象了... 1 >>> fibs = [0,1] 2 >>> for i in range(8): 3 fibs.append(fibs[-2] + fibs[-1]) 4 5 >>> fibs 6 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34] 或者说输入一个动态的长度: 1fibs = [0,1] 2num = i

使用循环解决斐波那契数列Fibonacci sequence

1 # encoding:utf-8 2 ''' 3 Created on 2017年8月7日 4 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子, 5 小兔子长到第三个月后每个月又生一对兔子, 6 假如兔子都不死,问每个月的兔子总数为多少? 7 知识链接: 8 1.在使用函数传递变量时不要同全局变量的名称一样 9 2.全局变量在函数中使用时,需要用 global声明 10 @author: wangtaoyuan 11 ''' 12 new = 1#刚出生的小兔子对数 13

c#斐波那契数列(Fibonacci)(递归,非递归)

public static int Foo(int i)        {            if (i < 3)            {                return 1;            }            else            {                return Foo(i - 1) + Foo(i - 2);            }        } static void Main(string[] args)        { 

MIT Python 第四课函数抽象与递归简介 最后三分钟递归的经典案例:斐波那契数列

斐波那契数列Fibonacci Sequence,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 有一对一个月大的一公一母的兔子,再过一个月的时候交配生小兔子,假设它们生的是两只一公一母的小兔子,在下一个月末这两只小兔子也有了后代同样是一公一母,问题是一年后你会有多少只小兔子?[呲牙]第三年的时候就像到了澳大利亚... >>&g

斐波拉契数列应用

斐波拉契数列的应用实例 什么是斐波拉契数列(Fibonacci sequence)?将其前几项写出来就是:0 1 1 2 3 5 8 13 21....... 观察不难发现其规律是,从第二项起,每一项的值都为前两项的和.而且这个数列有趣的地方就在于这个非常特殊的规律.它是有通项公式的,但是推导与主题无关,而且也几乎用不上,所以就不多叙述. long fi(int n) { if(n==1||n==2) return 1; else return fi(n-1)+fi(n-2); } 但是如果这样