gpt4 book ai didi

java - 多次递归迭代

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:20 24 4
gpt4 key购买 nike

我正在学习 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;
}

最佳答案

尝试简单地使用两个变量。

    public static int rec1(int n) {

int result=0;
int previous1=0;
int previous2=0;

int i=0;
while(i<=n)
{
if(i==0 || i==1)
{
result=1;
}
else
{
result= previous1 + previous2 + 1;
}

previous2=previous1;
previous1=result;
i++;
}
return result;
}

关于java - 多次递归迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29987025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com