斐波那契数列是这样的一串数字:1,1,2,3,5,8,13······,这串数字的规律是第一个和第二个数字都是1,从第三个数字开始,是前两个数字的和,用程序算出数列中第n个数字是多少。
使用递归的方法:
package com.xiamu.fobonacci;
import java.util.Scanner;
public class TestTwo {
private static long[] a;
private static Scanner scanner;
public static void main(String[] args) {
scanner = new Scanner(System.in);
System.out.print("请输入要获得数列中的第几项值:");
int input=Integer.parseInt(scanner.nextLine().trim());
a=new long[input];
countValue(input);
System.out.println("f("+input+"):"+a[input-1]);
}
private static void countValue(int i) {
switch(i) {
case 1:
a[0]=1;
break;
case 2:
a[1]=1;
break;
default:
a[0]=1;
a[1]=1;
for(int index=2;index<i;index++) {
a[index]=a[index-1]+a[index-2];
}
}
}
}
使用递归算法,当n的值增大时就会降低程序的效率。
使用数组和switch:
package com.xiamu.fobonacci;
import java.util.Scanner;
public class TestTwo {
private static long[] a;
private static Scanner scanner;
public static void main(String[] args) {
scanner = new Scanner(System.in);
System.out.print("请输入要获得数列中的第几项值:");
int input=Integer.parseInt(scanner.nextLine().trim());
a=new long[input];
countValue(input);
System.out.println("f("+input+"):"+a[input-1]);
}
private static void countValue(int i) {
switch(i) {
case 1:
a[0]=1;
break;
case 2:
a[1]=1;
break;
default:
a[0]=1;
a[1]=1;
for(int index=2;index<i;index++) {
a[index]=a[index-1]+a[index-2];
}
}
}
}