斐波那契数 Fibonacci by Java


方法一:递归


/**
 * 斐波纳契数列(Fibonacci Sequence):
 * F1=1                   (n=1)
 * F2=1                   (n=2)
 * F(n)=F(n-1)+F(n-2)           (n>=3)
 * @author guozw
 *
 */
public class Fibonacci00 {
    public static long fib(int n) {
        if (n <= 1) 
        return n;
        else 
        return fib(n-1) + fib(n-2);
    }


    public static void main(String[] args) {
        int N = Integer.parseInt("20");
        for (int i = 1; i <= N; i++)
            System.out.println("第" +i + "个数: " + fib(i));
    }


}


方法二:非递归


/**
 * 斐波纳契数列(Fibonacci Sequence):
 * F1=1                   (n=1)
 * F2=1                   (n=2)
 * F(n)=F(n-1)+F(n-2)           (n>=3)
 * @author guozw
 *
 */
public class Fibonacci {   
    
    /*输出斐波那契数*/  
    public static void printFibonacciNumber(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers   
        for(int i = 1;i <= n;i++){   
            System.out.print(f1+" "+f2+" ");//先输出前两个数   
            if(i % 5 == 0)
            System.out.print("\n"); //10个数自动换行<为了显示,无实际意义> 
            
            f1 = f1+f2;   //计算下两个数
            f2 = f1+f2;   
        }   
           
       /* 后数除前数为黄金分割点  */
        System.out.print("\n"+"-------------------------------------"+"\n");   
        System.out.println((double)f2/f1);//越到后边,后数除前数越接近黄金分割点   
           
           
    }   
       
    /*输出斐波那契数组*/  
    public static void printFibonacciArray(long f1,long f2,int n){//the first number, the second number,the totel fibonacci numbers   
        long f[] = new long[n];   
        f[0]=f1;   
        f[1]=f2;   
        for(int i =2;i <n;i++){ 
            f[i]=f[i-2]+f[i-1]; //数组的第三个数开始为前两个数的和  
        }   
        System.out.println("-------------------------------------"+"\n");   
        System.out.println(java.util.Arrays.toString(f)); //把数组转化成String输出  
           
    }   
  
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
      //  Fibonacci.printFibonacciNumber(0, 1, 10);//print the 20 advanced fibonacci number   
        Fibonacci.printFibonacciArray(1, 1, 15);   
    }   
  
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值