導航:首頁 > 編程語言 > java斐波那契遞歸

java斐波那契遞歸

發布時間:2022-06-28 23:28:47

java實現斐波那契數列的幾種方法時間效率問

這道兔子題的實質就是斐波那契數列: 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
1 1 2 3 5 8 13 ……

方案一:遞歸演算法實現

public static long fib(int n){

if(n <= 1){

return 1;

}else{

return fib(n - 1) + fib(n - 2);

}

}

初看起來,使用遞歸演算法是最簡潔的。可是,如果將程序編碼病在n值為40左右時運行那麼這個程序讓人感到效率低的嚇人。n>4時,其時間效率為fib(N)>=(3/2)的n次方,這個程序運行的時間以指數的速度增長。這大概是最壞的情況。

方案二:數組方式

public static int fib2(int n) {

int[] array = new int[n];

array[0] = array[1] =1;

for (int i = 0; i < array.length; i++) {

if (i == 0 || i == 1) {

return array[i];

}else {

array[i] = array[i-1] +array[i-2];

}

} return array[i];

}

數組方式的好處是只是用了一個for循環,運行時間可以顯著降低。

Ⅱ JAVA用遞歸方法實現斐波那契數列

public static long fib1(int n){
if(n==1){
return 1;
}elseif(n==2){
return 2;
}else{
return fib1(n-1)+fib1(n-2);
}
}

Ⅲ java用遞歸編程求斐波那契數列第n項

套數學里的就是了 f(0) = 1, f(1) = 1, f(2) = 2, ...

int fib(int i){
if( i < 2 ) return 1; // 遞歸結束的條件

return f(i -1) + f(i-2);

}

Ⅳ java中遞歸調用fibonacci

文件不要保存成有格式的UTF-8文件。

f作為函數名、而函數之內又作為變數名。

Ⅳ java判斷一個數是否斐波那契

斐波納契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞歸的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。

以下是Java代碼實現(遞歸與遞推兩種方式):


importjava.util.Scanner;

publicclassFibonacci{

publicstaticvoidmain(String[]args){
Scannerscanner=newScanner(System.in);
System.out.println("Pleaseinputthisfibonaccin:");
intn=scanner.nextInt();//假設輸入為大於零的整數

System.out.println(fibonacci(6)+":"+fibonacciNormal(6));

intsum=0;
for(inti=1;i<=n;i++){
sum+=fibonacci(i);
}
System.out.println(sum);
}

//遞歸實現方式
publicstaticintfibonacci(intn){
if(n<=2){
return1;
}else{
returnfibonacci(n-1)+fibonacci(n-2);
}
}

//遞推實現方式
(intn){
if(n<=2){
return1;
}
intn1=1,n2=1,sn=0;
for(inti=0;i<n-2;i++){
sn=n1+n2;
n1=n2;
n2=sn;
}
returnsn;
}
}

Ⅵ 如何用java語言輸出斐波那契數列

/*packagewhatever;//don'tplacepackagename!*/
importjava.util.*;
importjava.lang.*;
importjava.io.*;
classFibonacci{
publicstaticvoidmain(String[]args){
inta=1,b=1,c=0;
System.out.print(a+" "+b+" ");
for(inti=1;i<=18;i++){
c=a+b;
a=b;
b=c;
System.out.print(c+" ");
if((i+2)%5==0)
System.out.println();
}
}
}

Ⅶ 斐波那契數列在JAVA中使用遞歸和循環哪個更好

public class A
{
public static void main(String[] args)
{
//列印斐波那契(Fibonacci)數列,求出前20項:1,1,2,3,5,8,13,21....
/*
int[] fib = new int[20];
fib[0] = 1;
fib[1] = 1;
for (int i=2;i<fib.length ;i++ )
{
fib[i] = fib[i-1]+fib[i-2];
}
//列印輸出
for (int i=0;i<fib.length ;i++ )
{
System.out.print(fib[i]+" ");
}
*/
我認為用循環好。

Ⅷ java語言解決斐波那契數列問題

遞歸函數的定義:
遞歸函數即自調用函數,在函數體內直接或間接的調用自己,即函數的嵌套是函數本身。
遞歸方式:遞歸調用有直接遞歸和間接遞歸兩種方式。
直接遞歸:在函數中出現調用函數本身。
下面代碼求斐波那契數列第n項,斐波那契數列第一和第二項是1,後面每一項是前兩項之和,即1、1、2、3、5、8、13
...。
public
class
test
{
public
static
void
main(string
args[])
{
int
x1
=
1;
int
sum
=
0;
int
n
=
7;
for
(int
i
=
1;
i
<=
n;
i++)
{
x1
=
func(i);
sum
=
sum
+
x1;
}
system.out.println("sum="
+
sum);
}
public
static
int
func(int
x)
{
if
(x
>
2)
return
(func(x
-
1)
+
func(x
-
2));
else
return
1;
}
}
間接遞歸:指函數中調用了其他函數,而該其他函數有調用了本函數。
用間接遞歸來計算上述斐波那契數列。
程序代碼:
public
class
test
{
public
static
void
main(string
args[])
{
int
x1
=
1;
int
sum
=
0;
int
n
=
7;
for
(int
i
=
1;
i
<=
n;
i++)
{
x1
=
func1(i);
sum
=
sum
+
x1;
}
system.out.println("sum="
+
sum);
}
public
static
int
func1(int
a){
int
b;
b=func2(a);
return
b;
}
public
static
int
func2(int
b)
{
if
(b>
2)
return
(func1(b
-
1)
+
func1(b
-
2));
else
return
1;
}
}

Ⅸ 如何用java方法最優雅的實現斐波那契數列

其實所有的遞歸都可以用循環來寫,區別是有的程序用遞歸寫起來更加容易,能夠提高程序執行的效率。關關於斐波那契數列用遞歸會更加好。

Ⅹ java實現計算斐波那契數列第n項值的方法是什麼

其實就是一個遞歸演算法,如下:
public class Test {
public static void main(String[] args) {
System.out.println(f(6));
}
public static int f(int n){
if(n==1||n==2){
return 1;
}else{
return f(n-1)+f(n-2);
}
}
}

閱讀全文

與java斐波那契遞歸相關的資料

熱點內容
不去互聯網程序員 瀏覽:550
電腦qq郵箱解壓的圖片保存在哪裡 瀏覽:544
嵌入命令行 瀏覽:91
檔案為什麼被加密 瀏覽:486
十天學會單片機13 瀏覽:875
榮耀怎麼設置讓app一直運行 瀏覽:993
共享文件夾能在哪裡找到 瀏覽:435
旅遊訂旅店用什麼app 瀏覽:240
一個女程序員的聲音 瀏覽:496
魔術app怎麼用 瀏覽:340
單片機有4個8位的io口 瀏覽:897
win10rar解壓縮軟體 瀏覽:169
plc教程pdf 瀏覽:668
pythonshell清屏命令 瀏覽:279
檢測到加密狗注冊伺服器失敗 瀏覽:205
解壓後手機如何安裝 瀏覽:519
極客學院app為什麼下架 瀏覽:14
圖片批量壓縮綠色版 瀏覽:656
東北程序員帥哥 瀏覽:709
加密封條風噪小 瀏覽:975