斐波纳挈数列是一个很古老的数学算法了,这几天有必要把关于这个问题的算法总结一下: 大概有3种算法吧,每种算法各有侧重点,出发点。还有其他的算法大家都交流一下吧:
package com.example.day1;
import java.lang.reflect.Method;
import java.util.Scanner;
import javax.print.attribute.standard.Media;
public class Fibonacci {
public static void main(String[] args) {
// method1(701408734); //方法1算的是某个数字以内的所有的斐波纳挈数列
// int temp = method2(52); 方法2 算的是斐波纳挈数列的第多少位是多少
// System.out.println(temp);
method3(); //方法3计算指定指定位数以内的所有斐波纳挈数列。
}
/*
*
*/
private static void method1(int num ){
int a= 0 ,b= 1 , sn = 0 ;
int count = 0 ;
for(int i =1 ; i < num ;i++ ){
if ( i < 2){
count++;
System.out.println(1);
}
sn = a+ b ;
a = b ;
b =sn ;
if (sn > num){
break ;
}
count++ ;
System.out.println( count + ":"+ sn);
}
}
private static int method2(int num){
if (num ==1 || num ==2 ){
//System.out.println(1);
return 1 ;
}else{
int sn = method2(num-2)+ method2(num-1) ;
// System.out.println(sn);
return sn ;
}
}
private static void method3( ){
System.out.println("请输入任意大于0 的整数");
Scanner sc = new Scanner(System.in);
int s = sc.nextInt();
long[] arry =new long[s] ;
arry[0] = 1;
arry[1] = 1;
for (int i= 2 ; i < arry.length ; i++) {
arry[i] = arry[i-2] + arry[i-1] ;
System.out.println(arry[i-2]);
}
System.out.println(arry[arry.length-2]);
System.out.println(arry[arry.length-1]);
}
}