# 作業 2 遞精喔 ### 1. 一般遞迴 ``` int climbStairs(int n){ if(n<2) return 1; else{ return climbStairs(n-1)+climbStairs(n-2); } } ``` #### 結果:Time Limit Exceeded 超時 ![](https://i.imgur.com/9TUZ2Ah.png) --- ### 2. 記憶遞迴 ``` int result[46] = {0}; int climbStairs(int n) { if(n <= 1) { return 1; } if(result[n] > 0) { return result[n]; } result[n] = climbStairs(n - 1) + climbStairs(n - 2); return result[n]; } ``` ### Leet Code 結果 執行時間:3 ms 記憶體用量:5.4 MB ![](https://i.imgur.com/ragvfJK.png) --- ### 3. 陣列 ``` int climbStairs(int n) { if(n == 0||n==1) return n; int b = 1; int a = 2; for(int i=3;i<=n;i++){ a = a+b; b = a-b; } return a; } ``` ### Leet Code 結果 執行時間:0 ms 記憶體用量:5.4 MB ![](https://i.imgur.com/RVFz10x.png)