class Solution {
public:
int climbStairs(int n) {
if ( n == 0) {
return 0;
}
vector<int> cache(n, -1);
return climb(n - 1, cache);
}
private:
int climb(int i, vector<int>& cache) {
if (i == 0) {
return 1;
} else if (i == 1) {
return 2;
}
if (cache[i] == -1){
cache[i] = climb(i - 1, cache) + climb(i - 2, cache);
}
return cache[i];
}
};