費波那契數列演算法

來源:互聯網
上載者:User

標籤:非遞迴   row   import   text   highlight   str   end   stat   out   

費波那契數列演算法

白寧超

2016年10月27日20:06:54

斐波那契數學描述:

F0 = 0     (n=0)

F1 = 1    (n=1)

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

Python語言實現:

分析:當n=0時為0,n=1時為1,n>2時,最後兩數之和。由此可知,鏈表fibs初始化0,1;列表可以當做鏈表使用,具有負數索引特性,採用後兩位元相加追加即可。

import datetime#由於斐波那契特性前兩首0,1,其後各項均為之前兩數之和可知,時間複雜度O(n)def fib(n):fibs=[0,1]for i in range(n-2): #開始兩項已知fibs.append(fibs[-2]+fibs[-1])return fibs[-1]#迭代實現,時間複雜度O(n)def fib1(n):a,b = 0,1for i in range(n-1):a,b= b,a+breturn a #遞迴演算法實現,其中n=0返回0,n=1返回1,n>=2返回之前兩項之和,時間複雜度O(nlgn)def fib12(n):if n == 0:return 0elif n == 1:return 1else:return fib1(n-2)+fib1(n-1)# 遞迴進行初始化O(nlgn)def fib3(n):init = {0: 0, 1: 1}if not n in init:init[n]=fib2(n-2)+fib2(n-1)return init[n] print(datetime.datetime.now())#print("1\t"+str(fib(10000))) #0.1Sprint(datetime.datetime.now())print("2"+str(fib3(10000))) #0.8sprint(datetime.datetime.now())#print("3\t"+str(fib1(30))) #3.4sprint(datetime.datetime.now())#print("4\t"+str(fib2(30)) #7.1sprint(datetime.datetime.now())
Java代碼實現:
class Ideone{public static void main (String[] args) throws java.lang.Exception{int fibnum=fib1(1000);System.out.println(fibnum);}//遞迴演算法public static int fib(int n){if(n==0) return 0;else if(n==1) return 1;else return fib(n-1)+fib(n-2);}
//非遞迴演算法public static int fib1(int n){int a=0,b=1,temp=0;for(int i=0;i<n;i++){temp=a;a=(a+b);b=temp;}return a;}}

  

C語言代碼實現:
#include <stdio.h>int fib(int n);int main(void) {// your code goes hereint fibnum=fib1(10);printf("%d",fibnum);return 0;}
//遞迴演算法int fib(int n){if(n==0) return 0;else if (n==1) return 1;else return fib(n-1)+fib(n-2);}

//非遞迴演算法int fib1(int n){int a=0,b=1,temp=0;for(int i=0;i<n;i++){temp=a;a=(a+b);b=temp;}return a;}

  

C#代碼實現:
public class Test{public static void Main(){// your code goes hereint fibnum=fib1(10);Console.WriteLine(fibnum);}
//遞迴演算法public static int fib(int n){if(n==0) return 0;else if(n==1) return 1;else return fib(n-1)+fib(n-2);}

//非遞迴演算法public static int fib1(int n){int a=0,b=1,temp=0;for(int i=0;i<n;i++){temp=a;a=(a+b);b=temp;}return a;}}

費波那契數列演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.