Fibonacci数

Fibonacci数

描述

无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递归地定义为
F(n)=1 ...........(n=1或n=2)
F(n)=F(n-1)+F(n-2).....(n>2)
现要你来求第n个斐波纳奇数。(第1个、第二个都为1)

输入
第一行是一个整数m(m<5)表示共有m组测试数据
每次测试数据只有一行,且只有一个整形数n(n<20)
输出
对每组输入n,输出第n个Fibonacci数
实现:
package July;

import java.util.Scanner;

public class fiobolaco {

private static  int num[]=new int[1000];
    public static void main(String[] args) {
      Scanner sc=new Scanner(System.in);
      //System.out.println("请输入斐波拉切数列的m组测试数据:"+m);
      int m=sc.nextInt();//获取m组测试数据
      int data[]=new int[m];
      for(int i=0;i<m;i++){
          data[i]=sc.nextInt();
      }
      System.out.println("斐波拉切数列为:");
      generate(num);
      System.out.println();
      //找到指定位置在数列中的数值
      for(int i=0;i<data.length;i++){
      find(data[i]);
      }
    }
    public static void  generate(int[] num){
        for(int i=1;i<=30;i++){
            if(i==1||i==2){
                num[i]=1;
            }else{
                  num[i]=num[i-1]+num[i-2];
            }    
            System.out.print(num[i]+"  ");
        }
    }
    public static void find(int n){
        for(int i=1;i<num.length;i++){
            if(i==n){
                System.out.println("第"+n+"位在斐波拉切数列中的数位:"+num[i]);
                
            }
        }
    }

}

递归方法:

public class fiobolaco2 {
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    int n= sc.nextInt();
    System.out.println("第"+n+"位上的数为:"+fib(n));

    }
    public static int fib(int n){
        if(n==0){
            return 0;
        }else if(n==1){
            return 1;
        }else 
            
        return fib(n-1)+fib(n-2);
        
    }

}

运行结果:

原文地址:https://www.cnblogs.com/java-7/p/7152416.html