天天看點

LeetCode刷題509-簡單-斐波那契數列☀️ 前言 ☀️🙀 作者簡介 🙀💗 一、題目描述 💗💁 二、題目解析 💁🏃 三、代碼 🏃🌔 結語 🌔

LeetCode刷題509-簡單-斐波那契數列☀️ 前言 ☀️🙀 作者簡介 🙀💗 一、題目描述 💗💁 二、題目解析 💁🏃 三、代碼 🏃🌔 結語 🌔

文章目錄

算法作為極其重要的一點,是大學生畢業找工作的核心競争力,是以為了不落後與人,開始刷力扣算法題!

大家好,我是布小禅,一個盡力讓無情的代碼變得生動有趣的IT小白,很高興能偶認識你,關注我,每天堅持學點東西,我們以後就是大佬啦!

📢 :

❤布小禅❤ 📢 作者專欄: ❤Python❤ ❤Java❤ ❤力扣題❤ 這是我刷第 83/100 道力扣簡單題

求斐波那契數列的第n項

斐波那契數,通常用

F(n)

表示,形成的序列稱為 斐波那契數列 。該數列由

1

開始,後面的每一項數字都是前面兩項數字的和。也就是:

F(0) = 0,F(1) = 1
F(n) = F(n - 1) + F(n - 2),其中 n > 1      

給你

n

,請計算

F(n)

示例1:

輸入:3
輸出:2
解釋:F(3) = F(2) + F(1) = 1 + 1 = 2      

示例2:

輸入:2
輸出:1
解釋:F(2) = F(1) + F(0) = 1 + 0 = 1      

提示:0 <= n <= 30

思路1

既然是這麼出名的數列,你自己想的方法肯定沒有前輩總結的好      
  • 既然是有規律的數列
  • 就有通項公式
  • 想想你們高中使用數列推導式求通項公式的方法
  • 求出通項公式為:F(n) = 1/根号5*(((1+根号5)/2)**n-((1-根号5)/2)**n)(或者直接百度搜一個通項公式)

/*
  既然是這麼出名的數列,你自己想的方法肯定沒有前輩總結的好
  - 既然是有規律的數列
  - 就有通項公式
  - 想想你們高中使用數列推導式求通項公式的方法
  - 求出通項公式為:F(n) = 1/根号5*(((1+根号5)/2)**n-((1-根号5)/2)**n)(或者直接百度搜一個通項公式)
*/
int fib(int n) {
    double sqrt5 = sqrt(5);   // (1) 求出根号5以便于重複使用
    double fibN = pow((1 + sqrt5) / 2, n) - pow((1 - sqrt5) / 2, n);    // (2) 求後面括号的值
    double Fn =  round(fibN / sqrt5);     // (3) 除以根号5
    return Fn;      // 傳回
}
      

堅持最重要,每日一題必不可少!😸

期待你的關注和督促!😛

LeetCode刷題509-簡單-斐波那契數列☀️ 前言 ☀️🙀 作者簡介 🙀💗 一、題目描述 💗💁 二、題目解析 💁🏃 三、代碼 🏃🌔 結語 🌔