#include <iostream>
using namespace std;
int step(int n);
int main()
{
int n;
cin >> n;
printf("%d", step(n));
return 0;
}
int step(int n) {
if (n == 0) return 1;
if (n < 0) return 0;
return step(n - 1) + step(n - 2);
}
优化:
记忆化搜索,减少重复搜索
#include <iostream>
using namespace std;
int res[10000] = {1, 0};
int step(int n);
int main()
{
int n;
cin >> n;
printf("%d", step(n));
return 0;
}
int step(int n) {
if (n < 0) return 0;
if (res[n] != 0) return res[n];
res[n] = step(n - 1) + step(n - 2);
return res[n];
}