面試題
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 ...