1. 程式人生 > >一道爬樓梯的演算法題

一道爬樓梯的演算法題

題目:一個人需要上樓梯,每次他只能上1,2或者3節臺階一共有18節臺階,問此人有多少種方法走上樓梯?

解:此題是遞迴題,f(18)=f(17)+f(16)+f(15);

解析:假設只有一節臺階 有1種方法可以上去,2節臺階時有2種,3節時有4種方法,按照上述歸納f(4)=f(1)+f(2)+f(3);以此繼續算;

若是求共18節樓梯,其實就可以倒著想,他最後上到18級時,只能有3種方式,1級2級3級,若為1級,則有的方法就是f(17),若為2級,則有的方法就是f(16),若為3級,則有的方法就是f(15),三種情況加起來,便是總的方法數。

第2問:此題的時間複雜度?

解 3的n次方(當n趨與無限大的時候)

第三問:怎麼樣 提高此題的計算效率?

解:1用一個for迴圈,複雜度就是n

2.將所有資料存起來,用的時候直接讀出來,也就是用空間換時間。