gpt4 book ai didi

java - 将递归方法变成迭代方法

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

我必须创建两个方法来做同样的事情。这些方法必须计算从 0 到 30 的数字的 L(n),其中 L(n) 定义为

L(0) = 1

L(1) = 1

L(n) = L(n - 1) + L(n - 2) + 1;when n > 1

第一个方法必须使用我成功完成的递归编写,第二个方法必须使用迭代(数组和 for 循环)第一种方法)

public static int rec(int x) {
if (x == 0) return 1;
if (x == 1) return 1;
else return rec(x - 1) + rec(x - 2) + 1;
}

我在第一个方法的main中添加了这个

int x = 0;
while (x <= 30) {
System.out.println(rec(x));
x++;
}

这就是我用第二种方法所能做的,虽然我知道这是错误的,但请记住我是一个初学者,要温柔第二种方法)

 public static long iter(long [] x){
long result = 0 ;
int length = x.length;
for ( int i = 0 ; i < length ; i++){
if ( i == 0 ) result = 1;
if ( i == 1 ) result = 1;
else result += x[i-1]+x[i-2]+1;
}
return result ;
}

最佳答案

想想你的代码在这里做什么 -

for ( int i = 0 ; i < x.length ; i++){
long returnvalue = x[i-1]+x[i-2]+1; // every iteration you are resetting returnvalue.
}

在每次迭代中,您都在创建一个新变量,然后丢失您刚刚计算的内容。您需要从每次迭代中添加此结果,因此您必须这样做 -

 for ( int i = 0 ; i < x.length ; i++){
returnvalue = returnvalue + x[i-1]+x[i-2]+1;
}

或者你也可以这样做——

returnvalue +=  x[i-1]+x[i-2]+1;

请注意,在迭代版本中,returnValue 仅在循环开始前定义一次。

关于java - 将递归方法变成迭代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899648/

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