zoukankan      html  css  js  c++  java
  • 斐波那契数列(关于递归)

    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);
    	}
    }
  • 相关阅读:
    BZOJ 1899: [Zjoi2004]Lunch 午餐
    BZOJ3670: [Noi2014]动物园
    BZOJ3712: [PA2014]Fiolki
    BZOJ1057: [ZJOI2007]棋盘制作
    BZOJ4326: NOIP2015 运输计划
    BZOJ4721: [Noip2016]蚯蚓
    BZOJ1131: [POI2008]Sta
    BZOJ1856: [Scoi2010]字符串
    BZOJ4003: [JLOI2015]城池攻占
    [AH2017/HNOI2017]单旋
  • 原文地址:https://www.cnblogs.com/icenter/p/1988817.html
Copyright © 2011-2022 走看看