【发布时间】:2015-07-11 07:03:55
【问题描述】:
我正在学习 Java,为了一个练习,我必须实现一个递归和迭代方法,返回以下正整数。
L(0) = 1
L(1) = 1
L(n) = L(n - 1) + L(n - 2) + 1 if n > 1
递归方法没问题。
public static int rec (int n) {
if (n > 1) {
return rec (n-1) + rec(n-2) + 1;
}
else {
return 1;
}
}
我可以将简单的递归转换为迭代,反之亦然,但我不知道如何解决这个问题。你有什么建议吗?
编辑:感谢斐波那契数列的提示。我现在明白了:
public static int iter (int n) {
int f0 = 1;
int f1 = 1;
int fn = 0;
if (n > 1) {
for (int i = 1; i < n; i++) {
fn = f0 + f1 + 1;
f0 = f1;
f1 = fn;
}
}
else {
return 1;
}
return fn;
}
【问题讨论】:
-
您在谈论斐波那契数列。那里确实有很多东西。
-
@LuisLavieri:我没有发现他的问题有任何问题。这是一个有效的问题,如果有很多东西,你可以发布你的答案。那肯定会有所帮助:)
-
@ANjaNA:他不是在问怎么做。如果你有任何提示,他要求给他任何提示!
-
if (n > 1) { return rec (n-1) + rec(n-2) + 1; }斐波那契没有+1
标签: java algorithm recursion iteration