【发布时间】:2015-07-06 03:16:53
【问题描述】:
我必须创建两个做同样事情的方法。这些方法必须计算从 0 到 30 的数字的 L(n),其中 L(n) 定义为
L(0) = 1
L(1) = 1
L(n) = L(n - 1) + L(n - 2) + 1; 当 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循环中累积结果,现在你只需重新分配它。
-
请注意,根据您的老师的要求水平,他可能期望更有效地实现递归方法。
标签: java algorithm recursion iteration