早教吧 育儿知识 作业答案 考试题库 百科 知识分享

斐波那契数列java老师上周布置java基础课的作业、要我们把数列(1,1,2,3,5,8,13,21....)用java代码弄出来,一共要弄到第二十项。由于我们刚上基础、不怎么熟悉Java、希望回答者能用我看得懂

题目详情
斐波那契数列 java
老师上周布置java基础课的作业、要我们把数列(1,1,2,3,5,8,13,21....)用java代码弄出来,一共要弄到第二十项。由于我们刚上基础、不怎么熟悉Java、希望回答者能用我看得懂的方法写出。
▼优质解答
答案和解析
//这里采用两种方法实现该数列
//第一种方法:用递归调用相加,实现简单,但效率极低
//第二种方法:比第一种略显复杂,但效率高
//------------------------------------------------------------
import java.util.Scanner;
public class Fibonacci {
//方法1:递归方式
public static long getFibonacci1(long count){
if(count<=1){
return 1;
}
return getFibonacci1(count-1) + getFibonacci1(count-2);//递归调用
}

//方法2:非递归方式,复杂一点,但效率比方法1高
public static long getFibonacci2(long count){
if(count<=1){
return 1;
}
long temp = 0;
long prev = 1;
long next = 1;
for (long i = 2; i <=count; i++) {
temp = prev+next;
prev = next;
next = temp;
}
return temp;
}

public static void main(String[] args) {

System.out.println("请输入你要列出的项数,以回车结束:");
//控制台输入
Scanner s = new Scanner(System.in);
//输入的项数
int inputNum = s.nextInt();

System.out.println("得出斐波那契数列前"+inputNum+"项如下:");
for (long i = 0; i < inputNum; i++) {
//方式1
//System.out.prlong(getFibonacci1(i)+" ");
//方式2
System.out.print(getFibonacci2(i)+" ");
}

}
}