数组的方式
package santiago;
import java.util.Scanner;
/**
* 这里是利用数组的方式求斐波拉契数列
* @author santiago
*
*/
public class ArrFi {
public static int i;
private void fo(int m) {
int [] a = new int[10];
a[0] = 1;
a[1] = 1;
for (i = 2; i <= m; i++) {
if(i==2||i==1){
a[i] = 1;
}else{
a[i] = a[i-1]+a[i-2];
}
}
System.out.println(a[i-1]);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入你想求第几个月的兔子!");
int num = in.nextInt();
ArrFi b = new ArrFi();
if(num>0){
b.fo(num);
}else{
System.out.println("请输入大于0 的数");
}
}
}
迭代的方式
package santiago;
import java.util.Scanner;
/**
* 这里是按照迭代的方式求斐波拉契数列
* @author santiago
*
*/
public class NorFi {
private void sum(int m) {
int s = 1;
int s1 = 1;
int s2 = 0;
if(m==0||m==1){
s = 1;
}else{
for (int i = 2; i <= m+1; i++) {
s = s1 + s2;
s1=s2;
s2=s;
}
}
System.out.println(s);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入你求第几个月的兔子!");
int m = in.nextInt();
NorFi a =new NorFi();
a.sum(m);
}
}
递归的方式
package santiago;
import java.util.Scanner;
/**
* 1 1 2 3 5 ……采用的是递归的方式
* @author santiago
*
*/
public class SumFi {
private int f(int i) {
if(i==1||i==2){
return 1;
}else{
return f(i-1)+f(i-2);
}
}
public static void main(String[] args) {
SumFi a = new SumFi();
System.out.println("你想求第几个月的兔子");
Scanner in = new Scanner(System.in);
int num = in.nextInt();
if(num>0){
System.out.println(a.f(num));
}else{
System.out.println("请输入大于0的整数");
}
}
}