码迷,mamicode.com
首页 > 其他好文 > 详细

Talking About斐波那契数列(三种实现方法)

时间:2015-04-20 09:37:08      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:斐波那契数列   数据结构   算法   java   

    一直学习数据结构和算法,虽然学的没有太好,但还是觉得应该做一些有意思的程序来实现以下~牛客网(大哥推荐,还有就是。。不要问我大哥是谁~~技术分享)有剑指Offer系列很多的题目,不管是大神还是。。应该去做一下,感受编程的魅力~~(首先承认自己还是有很多不足的地方,但尽量去完善每一行代码~)  废话少说,代码搞起~

import java.util.Scanner;

/**
 * 现在要求输入一个整数n,请你输出斐波那契数列的第n项。
 * 斐波那契数列,又称黄金分割数列,指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144,
 * 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
 */
public class Fibonacci {
    /*
        递归实现斐波那契数列有很大的弊端,在于当用树形结构来表示依赖关系时,
        不难发现很多结点都是重合的,而且重复的结点会随着n的增大而急剧增加。
     */
    //递归实现斐波那契数列(最简单但最浪费时间的方法)
    public int Fibonacci1(int n){
        if(n <= 0)
            return 0;
        if(n == 1)
            return 1;
        return Fibonacci1(n -2) + Fibonacci1(n - 1);
    }
    //非递归实现斐波那契数列
    public int Fibonacci2(int n){
        if(n == 0)
            return 0;
        int[] index = new int[n + 1];
        index[0] = 0;  
        index[1] = 1;
        for(int i = 2;i <= n;i++)
            index[i] = index[i - 2] + index[i - 1];
        return index[n];
    }
    //非递归实现斐波那契数列2  这是看到了大神的解法,反正我觉得是屌的不行不行的  =。=
    public int Fibonacci3(int n) {
        if(n == 0)
            return 0;
        int[] index = new int[2];

        index[0] = index[1] = 1;

        for (int i = 3; i <= n; ++i)
            index[i % 2] += index[1 - i % 2];

        return index[n % 2];
    }
    public static void main(String args[]){
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入一个整数:");
        int a = scanner.nextInt();
        System.out.println("Method1斐波那契数列的第" + a + "项为:" + new Fibonacci().Fibonacci1(a));
        System.out.println("Method2斐波那契数列的第" + a + "项为:" + new Fibonacci().Fibonacci2(a));
        System.out.println("Method3斐波那契数列的第" + a + "项为:" + new Fibonacci().Fibonacci3(a));
    }

}
  做的时候感觉不太好实现,总有些地方觉得不对,其实只要对数组下标的寻找十分准确,这都不叫事~~而我经常就下标越界或者是指针对不上要输出的值。。。哎。。。还要多加练习~

Talking About斐波那契数列(三种实现方法)

标签:斐波那契数列   数据结构   算法   java   

原文地址:http://blog.csdn.net/qq_21394609/article/details/45131673

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!