java题fibonacci

来源:百度知道 编辑:UC知道 时间:2024/05/18 05:00:59
public class Test {

public static void main(String[] args) {
Fibonacci f=new Fibonacci();
for(int i=0;i<3;i++){
System.out.println(f.fib_1(i));
System.out.println(f.fib_2(i));
System.out.println("----------");
}
}
}
class Fibonacci{
public long fib_1(int n) {
if (n == 1)
return 0;
if (n == 2)
return 1;
else
return fib_1(n - 1) + fib_1(n - 2);
}
public long fib_2(int n) {
int num1 = 0;
int num2 = 1;
int temp = 0;
if (n == 1)
temp = num1;
if (n == 2)
temp = num2;
else
for (int count = 2; count != n; num1 = num2, num2 = temp) {
temp = num1 + num2;
count++;
}
return temp;

}
}
不明白是哪错了
????
先谢谢了

public class io {

public static void main(String[] args) {
Fibonacci f=new Fibonacci();
for(int i=0;i<3;i++){
// System.out.println(f.fib_1(i));
System.out.println(f.fib_2(i));
System.out.println("----------");
}
}
}
class Fibonacci{
public long fib_1(int n) {
if (n == 1){
return 0;
}
if (n == 2){
return 1;
}
else{
return fib_1(n - 1) + fib_1(n - 2); // 死循环(这里是递归调用,fib_1(n - 1)这个方法会不停的调用,无法跳出)
}
}
public long fib_2(int n) {
int num1 = 0;
int num2 = 1;
int temp = 0;
if (n == 1){
temp = num1;
}
if (n == 2){
temp = num2;
}
else{
for (int count = 2; count != n; num1 = num2, num2 = temp) {
temp = num1 + num2;
count++;
} // 你这里是一个无限循环,因为n永远小于count
}
return temp;
}
}
你看你上面的循环,是从0开始的,那么在调用方法 “fib_1”,他会判断出,0既不等于1,也不等于2,则进入else的块中,而在