劍指offer 面試題9

2021-08-16 01:59:51 字數 659 閱讀 8529



面試題

9:斐波那契數列

題目一:寫入乙個函式,輸入

n,求斐波那契切數列的第

n項。

題目二:乙隻青蛙一次可以跳上一級台階,也可以跳上兩級台階,求該青蛙一次跳上乙個

n級的台階總共有多少種跳法。

首先我們來看第二題,我們可以假設有乙個台階,青蛙跳法:1種;

有兩個台階,青蛙跳法:2種

有三個台階,青蛙跳法:3種

有四個台階,青蛙跳法:5種

有五個台階,青蛙跳法:8種

從青蛙跳台階的種數來看,它構成了一組斐波那契切數列,因此我們需要求斐波那切數列的第

n項。問題又回到了第一題。

在學校我們學習斐波那切數列時都是使用的是遞迴演算法,此辦法雖然簡單,但遞迴演算法本身就是呼叫棧,因此當使用這個演算法來解決此問題時,不但產生棧楨的開闢,浪費了很多空間,並且時間和效率都很低。

因此我們因該使用迴圈來解答此題

**如下:

#include

intfibonacei(

intn

)return

f3;}

intmain()

結果如下:

劍指offer 面試題9

對於第二道題目,我們可以認為有乙個函式f 放台階數是n時,有f n 種跳法,當台階數n 1時有f n 1 種跳法,以此類推 那麼f n 等於多少呢?青蛙第一次跳有兩種可能,要麼跳乙個台階,要麼跳兩個台階。跳乙個台階後還剩下n 1個台階,n 1個台階跳法有f n 1 種。跳兩個台階後還剩下n 2個台階...

劍指offer 面試題9

題目一 求斐波那契數列第n項 自己所寫 如下 include stdafx.h include long fibonacci unsigned int n return n 2 0 f0 f1 int main return0 雖然知道可以用遞迴實現,但實際寫 卻有些生疏,關鍵是對遞迴不是很熟練。l...

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...