导航:首页 > 编程语言 > 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斐波那契递归相关的资料

热点内容
成都市区建成面积算法 浏览:656
智能家居单片机 浏览:93
买男装用什么app好 浏览:851
文件夹合并了怎么拆开 浏览:256
波段副图源码无未来函数 浏览:84
livecn服务器地址 浏览:257
程序员这个工作真的很吃香吗 浏览:844
程序员和数学分析师待遇 浏览:678
压缩气弹簧怎么拆 浏览:321
华为公有云服务器添加虚拟ip 浏览:209
程序员和运营哪个累 浏览:24
抖音安卓信息提示音怎么设置 浏览:454
光速虚拟机的共享文件夹 浏览:248
程序员培训机构发的朋友圈真实性 浏览:742
天干地支简单算法 浏览:299
下载个压缩文件 浏览:300
普通人电脑关机vs程序员关机 浏览:628
米酷建站源码 浏览:115
氢气app怎么搜搭配 浏览:619
pdf绿盟 浏览:505