題目描述: java
一隻青蛙一次能夠跳上1級臺階,也能夠跳上2級……它也能夠跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 測試
輸入:輸入可能包含多個測試樣例,對於每一個測試案例, spa
輸入包括一個整數n(1<=n<=50)。 code
輸出:對應每一個測試案例, it
輸出該青蛙跳上一個n級的臺階總共有多少種跳法。 io
樣例輸入:6樣例輸出:
32
分析: class
當臺階數爲n時,能夠分爲如下步驟來完成:
設第一次跳的臺階數爲s,跳臺階方式數爲T,則:
(1)s=1時,T(n) = T(n-1)
(2)s=2時,T(n) = T(n-2)
.
.
.
(n)s=n時,T(n) = T(0) = 1
因此總的跳臺階方式數T能夠表示爲:
T(n) = T(0) + T(1) + T(2) + ... + T(n-1)
因爲T(0) = T(1) = 1,因此T(n) = 2^(n-1) import
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.StreamTokenizer; /** * 斐波那契數列之變態青蛙跳臺階 * @author aqia358 * */ public class Main { public static long f(int n){ long[] a = new long[n+2]; a[1] = 1; a[2] = 2; int pos = 3; while(pos <= n){ a[pos] = a[pos-1] * 2; pos++; } return a[n]; } public static void main(String[] args) throws IOException { StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); while(st.nextToken() != st.TT_EOF){ System.out.println(f((int)st.nval)); } } }