1. 程式人生 > >1,1,2,3,5,8,13,21..... 求斐波那契數列的第n個數;

1,1,2,3,5,8,13,21..... 求斐波那契數列的第n個數;

求斐波那契數列的第n個數;1,1,2,3,5,8,13,21.....

PHP的寫法如下=======================================

第一個遞迴的方法如下:

function test($n)
{

    if ($n == 1 || $n == 2) {
        return 1;
    }
    return test($n - 2) + test($n - 1);

}

優化改進迴圈的方法:

function test2($n)
{
    $sum = 1;
    $sum1 = 1;
    if (1 == $n) {
        return 1;
    } else if (2 == $n) {
        return 1;
    } else {
        for ($i = 0; $i < $n - 2; $i++) //  第三項等於前兩相加
        {
            $tem = $sum;   //  tem 儲存原來的sum
            $sum += $sum1; //  sum= 前兩項相加
            $sum1 = $tem;  //  sum1 =原來的sum    始終保證第三項等於前兩項相加
        }
        return $sum;
    }
}

相關推薦

1,1,2,3,5,8,13,21..... 數列n個數

求斐波那契數列的第n個數;1,1,2,3,5,8,13,21..... PHP的寫法如下======================================= 第一個遞迴的方法如下: function test($n) { if ($n == 1 ||

數列N項的3個寫法(JS)

 題目: 求斐波拉切數列第n個數的值是多少? 數列:1,1,2,3,5,8,13,21...... 第一種,for迴圈,直接求N項 // i代表第三項,res代表第i項的時候的值,通過前面2項相加去實現,n項的時候跳出迴圈,輸出res function fb(n){ v

輸入一個數n,計算數列(Fibonacci)的n個值 1 1 2 3 5 8 13 21 34 規律:一個數等於前兩個數之和。

import java.util.Scanner; /** * 輸入一個數據n,計算斐波那契數列(Fibonacci)的第n個值 1 1 2 3 5 8 13 21 34 規律:一個數等於前兩個數之和 * 計算斐波那契數列(Fibonacci)的第n個值. */ public cla

js實現數列 0 1 1 2 3 5 8 13 21 34 。。。

斐波那契數列就是著名的兔子生兔子問題,後面一個數等於前兩個數的和 //max大於等於2的整數 function fib(max) {      var t,a=0,b=1,arr = [0,1];      while (a

輸入一個數n,計算數列(Fibonacci)的n個值 1 1 2 3 5 8 13 21 34 規律:一個數等於前兩個數之和。

import java.util.Scanner; /** * 輸入一個數據n,計算斐波那契數列(Fibonacci)的第n個值 1 1 2 3 5 8 13 21 34 規律:一個數等於前兩個數之和 * 計算斐波那契數列(Fibonacci)的第n個值.

數列1 1 2 3 5 8 13 21 。。。。 n個數 使用遞迴實現

public class demo12 {   public static void main(String[] args) {System.out.println(cp(10));}   public static int cp(int n){   if(n<=0){

數列n個數1,1,2,3,5,8,13,21.....

遞迴方法: #include<stdio.h> #include<stdlib.h> int Fibonacci_sequence(int n) { if (n == 1

一列數的規則如下: 1123581321、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 {

一列數的規則如下: 1123581321、34...... 30位數是多少, 用遞歸算法實現。//數列

write pub else ole 位數 return spa sta ati 1 public class MainClass 2 { 3 public static void Main() 4 { 5 Console.WriteLine(F

Linux環境C語言拉切數列(1,1,2,3,5,8,13,.........)實現

fib %d lse printf 黃金 oda n-2 desktop tdi 斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子

Unity遞迴思想 階乘 1 1 2 3 5 8 13 和遞迴尋找子物體

遞迴的核心思想就是自己呼叫自己,只要能說出來,就能用程式碼寫出來   public int 階乘(int index)     {          &nbs

用java寫一個函式,實現Fibonacci數列演算法(1,1,2,3,5,8,13......)

這個演算法就是第一個數的救國是前兩個數相加, 這個還是結合例子比較好想 public class dd1 { public void getFibonacci(int number){ int nLeft = 0; int nRight = 1; System.out.pr

數列1.1.2.3.5.8......,輸入一個數字,比如3,顯示前面三個數字1,1,2.

int 都是 AR public 運行 sca ... 3.5 info 斐波那契數列(從第三個數字開始都是前面兩個數字的和),1.1.2.3.5.8......,輸入一個數字,比如3,顯示前面三個數字1,1,2. 1 public class practice {

數列1 2 3 5 8......兩種方式(JavaScript)

序列:1,2,3,5,8,13...。找出第20個數是多少?得出前20個數之和是多少? 方法一:            var i=1, j=1,sum=0;            for(var k=0;k<20;k++){                    

【hdu4549 M數列】【矩陣快速冪】【F[n] = F[n-1] * F[n-2] ,F[n] 】

【連結】 【題意】 F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 給出a, b, n,求出F[n] 【分析】 寫出幾項後,發現:F[n]=a^x*b^y,x,y成斐波那契數列。 且有規律:ans=a^

1-2 數列的和

ack rgs 原來 [] fish 一次 nbsp public string數組 import java.util.Scanner; /** * 斐波那契數列的和 * @author fish shadow * 輸入兩個正整數k1,k2(保證k1<=k2)。輸出

1.數列

斐波那契數列,別稱黃金分割數列,兔子數列 定義:f(0) = 1,f(1) = 1,f(n) = f(n-1) + f(n-2) 例如:數列 1、1、2、3、5、8、13、21、…… #遞迴法 def fib(n): if n <= 0: return 1

[洛谷]P2626 數列(升級版) (#數學 -1.11)

題目描述 請你求出第n個斐波那契數列的數mod(或%)2^31之後的值。並把它分解質因數。 輸入輸出格式 輸入格式: n 輸出格式: 把第n個斐波那契數列的數分解質因數。 輸入輸出樣例

Python (1) 效能試驗:數列

def fib(k): #列印 if(k==0 or k==1): return 1 else : return fib(k-1)+fib(k-2) for x in range(60): print (x,"的Fib值是

4.1數列N項(O(logN))

題目 給定整數N,返回斐波拉契數列的第N項。 O(2^N)的方法: /** * 暴力遞迴(O(2^N)) * * @param n 給定整數 * @return 斐波拉契數列第n項 */ public int f1(int n) { if (