1. 程式人生 > >遞迴用python求解斐波那契數列第n項

遞迴用python求解斐波那契數列第n項

      波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、...本程式在Python3的IDLE環境下執行通過
def fib (n):
    if n < 1:
        return -1
    if (1 == n) or (2 == n):
        return 1
    return fib(n-1) + fib(n-2)

def main():
    n = int(input("請輸入求解第幾項: "))
    result = fib(n)
    print("結果為%d"%result)

if __name__=='__main__':
    main()


相關推薦

python求解數列n

      波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的

使用線性代數求解數列n

一:問題 已知斐波那契數列,f1=1,f2=1,f3=3,f4=5...求第n項的數值 二:問題轉化為線性代數問題 可以得到方程 f(n+2)=f(n+1)+f(n) 為了解決問題,新增方程 f(n+1)=f(n+1) 記向量,則上兩式可以寫作 要求,只需知道,

求解數列n(JavaBigInteger之自底向上迭代)

import java.math.BigInteger; import java.util.*; public class Fab //用迭代法自底向上求解斐波那契數列第n項 { publi

java數列n

public class Fibonacci { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int f

數列Nf(N)[矩陣快速冪]

string sin int code char const mat ret truct 矩陣快速冪   定義矩陣A(m*n),B(p*q),A*B有意義當且僅當n=p。即A的列數等於B的行數。   且C=A*B,C(m*q)。   例如:   進入正題,由於現

數列n的三種求法

方法1:         利用遞迴方法,但是遞迴看似簡單但是無法處理較大的項數,時間複雜度為o(2^n)。 public class fib_遞迴 { /** * @param args */ public static

數列N(C++)

求斐波那契數的第N項,N可以很大但結果不能超過1000位; #include <iostream> #include <memory.h> #include <strin

數列N的最後一位

RT,該怎麼求呢? 首先,你可能會想到,順序遍歷求解。 利用通項公式,可以得到斐波那契序列: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34... 那每一項的最後一位就是: 0, 1, 1, 2, 3, 5, 8, 3, 1, 4... 這樣做的效

Java練習題-求數列n

/** * 求斐波那契數列第n項,n<30,斐波那契數列前10項為 1,1,2,3,5,8,13,21,34,55 * @author Tang * */ public clas

數列N

#include<stdio.h> int FibonacciSequence(int n) { int f1=1; int f2=1; int f3=1; for(int i=3;i<=n;i++) { f3=f1+f2; f1=f2;

數列n的高效解法

參考書籍《劍指Offer》 常見解法 談及斐波那契數列,我們直接就可以想到f(n)=f(n-1)+f(n-2)。於是做出如下解: long long Fibonacci(unsigned

矩陣快速模冪 + 求數列n(Fibonacci)

兩矩陣相乘,樸素演算法的複雜度是O(N^3)。如果求一次矩陣的M次冪,按樸素的寫法就是O(N^3*M)。既然是求冪,不免想到快速冪取模的演算法,前面有快速冪取模的介紹,a^b %m 的複雜度可以降

一列數的規則如下: 1、1、2、3、5、8、13、21、34...... 求30位數是多少, 演算法實現。//數列

1 public class MainClass 2 { 3 public static void Main() 4 { 5 Console.WriteLine(Foo(30)); 6 } 7 public static int Foo(int i) 8 {

Python函式案例:數列

遞迴函式是Python語言中較常見的函式,所謂的遞迴就是指在一種計算過程中,其中的每一步都要用到前面一步或者前面幾步的結果,一般有連加或者連乘。其中有一個最經典的例子就是斐波那契數列。 斐波那契數列具體是指1、1、2、3、5、8、13、21、34、……這樣一個數列,從第三個數列開始,每一個數列是由

Python每日一題:4題:Python實現數列

這是Python之禪和他朋友們在知識星球的第4題:用Python實現斐波那契數列 斐波那契數列(Fibonacci)最早由印度數學家Gopala提出,而第一個真正研究斐波那契數列的是義大利數學家 Leonardo Fibonacci,斐波那契數列的定義很簡單,用數學函式可表示為: 數列從0

C語言:二分查詢的法、將數列改為版本

#include<stdio.h> //二分查詢的遞迴法 void Search(int p[],int low,int height,int key) { int middle=(low+height)/2; if(l

【C++】數列N的和與非演算法

定義:斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、1

Python實現數列

斐波那契數列介紹 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故

Python編寫數列(Fibonacci Sequence)

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上

數列n的值

Description 輸入n,求斐波那契數列前n項的值。斐波那契數列規律如下:1, 1, 2, 3, 5, 8, 13,21, 34,55…,從第三項開始,每一項都是前面兩項的和。 Input 輸入正整數n。 Output 輸出斐波那契數列的前n項值 Sample Input