思路:
含山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
斐波那契數(shù)列
第0項(xiàng)是0,第1項(xiàng)是第一個(gè)1。
這個(gè)數(shù)列從第三項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和。
java代碼如下:
import?java.util.Scanner;
/**
*?斐波那契數(shù)列
第0項(xiàng)是0,第1項(xiàng)是第一個(gè)1。
這個(gè)數(shù)列從第三項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和
*?@author?young
*
*/
public?class?Fei?{
public?static?void?func(int?n)?{
if?(n??3)?{
System.out.println("0,1");
}?else?if?(n??3)?{
int?a=0,?b=1,?c=0;
??System.out.print(a?+?"????"?+?b?+?"????");
??for?(int?i?=?3;?i?=?n;?i++)?{
???c?=?a?+?b;
???a?=?b;
???b?=?c;
???System.out.print(c?+?"????");
??}
}?else?if?(n??0)?{
System.out.println("輸入數(shù)字不符合要求");
}
}
public?static?void?main(String[]?args)?{
Fei?f?=?new?Fei();
Scanner?input?=?new?Scanner(System.in);
System.out.print("請(qǐng)輸入斐波那契數(shù)列的列數(shù)n,按ENTER:");
int?num?=?input.nextInt();
System.out.println("斐波那契數(shù)列為:"?);?
func(num);
}
}
運(yùn)行結(jié)果如下:
//這里采用兩種方法實(shí)現(xiàn)該數(shù)列
//第一種方法:用遞歸調(diào)用相加,實(shí)現(xiàn)簡(jiǎn)單,但效率極低
//第二種方法:比第一種略顯復(fù)雜,但效率高
//------------------------------------------------------------
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);//遞歸調(diào)用
}
//方法2:非遞歸方式,復(fù)雜一點(diǎn),但效率比方法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("請(qǐng)輸入你要列出的項(xiàng)數(shù),以回車結(jié)束:");
//控制臺(tái)輸入
Scanner s = new Scanner(System.in);
//輸入的項(xiàng)數(shù)
int inputNum = s.nextInt();
System.out.println("得出斐波那契數(shù)列前"+inputNum+"項(xiàng)如下:");
for (long i = 0; i inputNum; i++) {
//方式1
//System.out.prlong(getFibonacci1(i)+" ");
//方式2
System.out.print(getFibonacci2(i)+" ");
}
}
}
流程圖如下:
public int Fibonacci(int n) {
? int[] res = {0, 1};
? if(n 2) {
? ? ? return res[n];
? }
? int first = 0;
? int second = 1;
? int fibn = 0;
? for(int i = 2; i = n; i++) {
? ? ? fibn = first + second;
? ? ? first = second;
? ? ? second = fibn;
? }
? return fibn;
}
public static void main(String[] args) {
System.out.println(Fibonacci(35));
}
public?class?Fibonacci?{
//?能夠被顯示的最大項(xiàng)
private?static?final?long?MAX_TERM_VALUE?=?10000;
public?void?run()?{
long?fibonacci_1?=?0L;
long?fibonacci?=?1L;
System.out.println(fibonacci_1);
while?(fibonacci??MAX_TERM_VALUE)?{
System.out.println(fibonacci);
long?temp?=?fibonacci_1?+?fibonacci;
fibonacci_1?=?fibonacci;
fibonacci?=?temp;
}
}
public?static?void?main(String[]?args)?{
new?Fibonacci().run();
}
}