進製數模式

2021-07-29 23:33:26 字數 652 閱讀 5352

1.進製數模式

考慮n位二進位制數,有多少個數中不存在兩個相鄰的1。例如,3位數中有5個數符合這一要求:000、001、010、100、101。

1、試找出其中的規律

2、請給出完整**實現(引數輸入**可略)

3、試證明你找到的規律是正確的

思路:

n位的二進位制,比如3位:000 001 010 100 101

什麼規律呢,假設n位二進位制有f(n)種不相鄰的組合,

從最左邊的位置開始放,可以放0,也可以放1。

如果最左邊放0,那麼將不影響第二位的放置,從第二位放起,即有f(n-1)種。

如果最左邊放1,那麼第二位則只能放0,從第三位放起,即有f(n-2)種。

所以f(n)=f(n-1)+f(n-2)種。

另外f(1)=2(因為可以放0或者1),f(2)=3(因為可以是00,01,10)。

問題就解決了。這是很常用的演算法思想,各種遞推問題,計數問題,通常從單個方向出發,針對不同策略分別

計數。

int fibonacci(int n)

else if (n == 1)

else if (n == 2)

else

return fn;

}}

建構函式模式

已經n天沒有學習了。中間辦了好多事,關乎人生大事,所以斷了學習。貌似理由很充分。總之,今天是十一長假的第二天,沒打算出去玩,把前段時間沒學習的趕緊彌補一下吧。上回說到建立物件時用的工廠模式,減少了 重複,可是不能區分出每個例項所對應的物件,於是建構函式登場了。function createobjec...

建構函式模式

function student props student.prototype.hello function function createstudent props var xiaoming createstudent xiaoming.hello hello xiaoming 傳進乙個陣列 f...

PLSQL 過程 引數模式

又拿起plsql在看了,看到過程這一部分。procedure的引數有三種模式 int,out,in out.如果不宣告的話,預設的是in。以前在學校老師講編譯原理的時候經常提到左值和右值,現在在plsql裡又遇到這種稱呼了。in模式的值是左值,read only的。out模式的值是右值的write ...