package com.demo.sw.test; import java.util.Scanner; /** * 斐波那契数列 1 1 2 3 5 8 13 21 ... * @author Mr.J * */ public class Fibonacii { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入数列中你想要的位数:"); int in = input.nextInt(); System.out.print("结果是:"); System.out.println(fibonacii2(in)); System.out.println("斐波那契的数组是:"); long [] arr = fibonaciiArr(in); prt(arr); } /** * 斐波那契数列第 n 位的值 * @param n * @return */ public static long fibonacii1(int n){ if(n==1 || n==2){ return 1; } return fibonacii1(n-1) + fibonacii1(n-2); } public static long fibonacii2(int n){ int a=1, b=1; int temp; if(n==1 || n==2){ return 1; } for (int i = 0; i < n-2; i++) { temp = a; a = b; b = a+temp; } return b; } /** * 斐波那契额的数列 * @param n * @return */ public static long[] fibonaciiArr(int n){ long [] rtArr = new long[n]; for (int i = 0; i < rtArr.length; i++) { rtArr[i] = fibonacii1(i+1); } return rtArr; } /** * 打印数组 * @param arr */ public static void prt(long[] arr){ String str = ""; for (int i = 0; i < arr.length; i++) { str += arr[i] + " "; } System.out.println(str); } }