从第3项开始,每一项都等于前两项之和。在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*),现在用代码形式表示出来:
package nunber2;
//狱史问题
import java.util.Iterator;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入n的值:");
int n=sc.nextInt();
System.out.println("第"+n+"项数是:"+f(n));
}//
public static int f(int n) {
if(n==1||n==2)
return 1;
else {
return f(n-1)+f(n-2);
}
}
}//
这段代码使用的是递归算法,但是递归算法贵在它能够使得代码简洁,但是缺点确实算法的复杂度有时候比一般的算法要高,所以我们算法的优化可以使用其他算法代替递归算法,优化如下:
package nunber2;
//狱史问题
import java.util.Iterator;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入n的值:");
int n=sc.nextInt();
int[] a=new int[n];//用数组和循环来实现
for (int i = 0; i < a.length; i++) {//数组从第三项开始
if(i==0||i==1)
a[i]=1;//前两个数都是1
else
a[i]=a[i-1]+a[i-2];//等于前两个数的和
System.out.println(a[i]+",");
}
}//
}//