斐波那契数列:1,1,2,3,5,8,13,21......
从第三个数字开始,这个数字本身为前两个数字之和。
import java.util.Scanner;
/**
* 2019/1/19
* @author
* @describe
*/
public class Fibonacci {
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
int m = sca.nextInt();
sca.close();
System.out.println(Solve1(m));
System.out.println("******************");
System.out.println(Solve2(m));
}
// 递归解法
public static int Solve1(int n){
if(n < 1){
throw new IndexOutOfBoundsException("不存在负数。");
}else if(n == 1 || n == 2){
return 1;
}
return Solve1(n - 1) + Solve1(n - 2);
}
// 非递归解法
public static int Solve2(int n){
if(n < 1){
throw new IndexOutOfBoundsException("不存在负数。");
}if(n == 1 || n == 2){
return 1;
}
int a = 1,b = 1,sum = 0;
for(int i = 3;i <= n;i++){
sum = a + b;
a = b;
b = sum;
}
return sum;
}
}