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

每天一道剑指offer-牛客网斐波那契数列

作者头像
乔戈里
发布2019-09-17 15:33:13
3310
发布2019-09-17 15:33:13
举报
文章被收录于专栏:Java那些事Java那些事

题目详述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39

题目详解

思路

  • f(n) = f(n-1) + f(n-2),第一眼看就是递归啊,简直完美的递归环境,递归肯定很爽,这样想着关键代码两三行就搞定了,注意这题的n是从0开始的: if(n<=1) return n; else return Fibonacci(n-1)+Fibonacci(n-2); 然而并没有什么用,测试用例里肯定准备着一个超大的n来让Stack Overflow,递归本质是利用栈,栈深度太深就会溢出;
  • 非递归的方法,就是剑指offer思路,每次使用两个变量a,b来计算下一个数的值sum,然后a,b,sum分别是斐波那契数列中的三个数,那么就令a=b,b=sum,这样a和b就往下移动了一个位置,再计算sum就是滴4个数了,重复这个过程即可。

代码

代码语言:javascript
复制
public class Solution {
    public int Fibonacci(int n) {
        int a = ;
        int b = ;
        if(n == )
            return ;
        if(n == )
            return ;
        int i = ;
        int sum=;
        while(i <= n)
        {
            sum = a + b;
            a = b;
            b = sum;
            i++;
        }
        return sum;
    }
}

代码讲解

  • 3-8行就是初始值n的个数为0或者1,直接返回当前结果
  • 11-17行就是计算斐波那契数列的下一个数,其中i用来统计计算出了几个数,循环终止条件。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

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

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

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