前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指Offer-斐波那契数列

剑指Offer-斐波那契数列

作者头像
武培轩
发布2018-04-18 16:59:25
5880
发布2018-04-18 16:59:25
举报
文章被收录于专栏:武培轩的专栏武培轩的专栏
代码语言:javascript
复制
package Recursion;

/**
 * 题目描述
 * 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
 * n<=39
 * 思路:
 * 在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)
 * 用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。
 * 特别指出:0不是第一项,而是第零项。
 */
public class Solution03 {
    public static void main(String[] args) {
        System.out.println(Fibonacci_2(4));
    }

    /**
     * 用递归直接求解
     *
     * @param n 斐波那契数列第n项
     * @return 斐波那契数列第n项的值
     */
    public static int Fibonacci(int n) {
        if (n <= 0) {
            return 0;
        }
        if (n <= 1) {
            return n;
        } else {
            return Fibonacci(n - 1) + Fibonacci(n - 2);
        }
    }

    /**
     * 迭代方法,用两个变量记录fn-1和fn-2:
     *
     * @param n 斐波那契数列第n项
     * @return 斐波那契数列第n项的值
     */
    public static int Fibonacci_2(int n) {
        int zero = 0, one = 1, fN = 0;
        if (n <= 0) {
            return 0;
        } else if (n == 1) {
            return 1;
        } else {
            //由zero和one保存中间结果
            for (int i = 2; i <= n; i++) {
                fN = one + zero;
                zero = one;
                one = fN;
            }
            return fN;
        }
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档