斐波那契数 Fibonacci by Java

本文介绍了两种方法实现斐波那契数列:递归和非递归。通过实例展示了递归方法的简洁性以及非递归方法的效率提升,并对比了两种方法的性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


方法一:递归


/**
* 斐波纳契数列(Fibonacci Sequence):
* F1=1 (n=1)
* F2=1 (n=2)
* F(n)=F(n-1)+F(n-2) (n>=3)
* @author guozw
*
*/
public class Fibonacci00 {
public static long fib(int n) {
if (n <= 1)
return n;
else
return fib(n-1) + fib(n-2);
}


public static void main(String[] args) {
int N = Integer.parseInt("20");
for (int i = 1; i <= N; i++)
System.out.println("第" +i + "个数: " + fib(i));
}


}


方法二:非递归


/**
* 斐波纳契数列(Fibonacci Sequence):
* F1=1 (n=1)
* F2=1 (n=2)
* F(n)=F(n-1)+F(n-2) (n>=3)
* @author guozw
*
*/
public class Fibonacci {

/*输出斐波那契数*/
public static void printFibonacciNumber(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers
for(int i = 1;i <= n;i++){
System.out.print(f1+" "+f2+" ");//先输出前两个数
if(i % 5 == 0)
System.out.print("\n"); //10个数自动换行<为了显示,无实际意义>

f1 = f1+f2; //计算下两个数
f2 = f1+f2;
}

/* 后数除前数为黄金分割点 */
System.out.print("\n"+"-------------------------------------"+"\n");
System.out.println((double)f2/f1);//越到后边,后数除前数越接近黄金分割点


}

/*输出斐波那契数组*/
public static void printFibonacciArray(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers
long f[] = new long[n];
f[0]=f1;
f[1]=f2;
for(int i =2;i <n;i++){
f[i]=f[i-2]+f[i-1]; //数组的第三个数开始为前两个数的和
}
System.out.println("-------------------------------------"+"\n");
System.out.println(java.util.Arrays.toString(f)); //把数组转化成String输出

}

/**
* @param args
*/
public static void main(String[] args) {
// Fibonacci.printFibonacciNumber(0, 1, 10);//print the 20 advanced fibonacci number
Fibonacci.printFibonacciArray(1, 1, 15);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值