斐波那契数列(关于递归)

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);
	}
}
原文地址:https://www.cnblogs.com/icenter/p/1988817.html