【发布时间】:2017-12-24 23:07:17
【问题描述】:
Bilbo 在他朋友的地方,有 N 步。比尔博,作为 有思想的人,想知道他可以通过多少方式到达 如果他一次走 1 或 2 步,第 N 个楼梯。注意他不能 一次采取超过或等于 2 个连续的 2 步。一种方式 如果他至少接触到第 N 个楼梯,则与另一个不同 一个不同的楼梯。
到目前为止,这是我的代码;我不知道如何不允许连续两次采取 2 步。帮忙?
public static int fibOptimized(int n) {
int arr[] = new int[n + 1];
for (int i = 0; i < arr.length; i++) {
arr[i] = -1;
}
int output = fibHelper(n, arr);
return output;
}
public static int fibHelper(int n, int[] arr) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
if (arr[n] > -1) {
return arr[n];
}
arr[n] = fibHelper(n - 1, arr) + fibHelper(n - 2, arr);
return arr[n];
}
【问题讨论】:
-
请阅读How to Ask。
-
如果您发布到目前为止的工作并在剩余部分寻求具体帮助,您将获得更好的回应。
标签: algorithm recursion data-structures