public class Main {
public static void main(String[] args) {
int n = 10;
int result = recursiveStep(n);
System.out.println("(递归)共有 " + result + " 种走法。");
int result2 = iterativeStep(n);
System.out.println("(递推)共有 " + result2 + " 种走法。");
}
static int recursiveStep(int n) {
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else {
return recursiveStep(n - 1) + recursiveStep(n - 2);
}
}
static int iterativeStep(int n) {
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else {
int[] dp = new int[n + 1];
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= n; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[n];
}
}
}