Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >剑指Offer-斐波那契数列

剑指Offer-斐波那契数列

作者头像
武培轩
发布于 2018-04-18 08:59:25
发布于 2018-04-18 08:59:25
64000
代码可运行
举报
文章被收录于专栏:武培轩的专栏武培轩的专栏
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指Offer(六)--斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39
秦怀杂货店
2022/02/15
1660
剑指Offer(六)--斐波那契数列
用递归法计算斐波那契数列的第n项
斐波纳契数列(FibonacciSequence)又称黄金分割数列,指的是这样一个数列:1、1、2C/C++
Java架构师必看
2021/03/22
9290
golang 斐波那契数
golang 斐波那契数 package main import "fmt" /* 斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci), 又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列: 0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义: F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由
landv
2019/07/04
5590
数据结构与算法-斐波那契数列
简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契
cwl_java
2019/10/26
6150
python中使用递归实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n – 1)+F(n – 2)(n ≥ 2,n ∈ N)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。*
全栈程序员站长
2022/07/04
8070
python中使用递归实现斐波那契数列
[剑指offer] 斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39
尾尾部落
2018/09/04
6480
斐波那契数列 -- C/C++ 实现
斐波那契数列有一个规律,斐波那契数列的前一项加上它的后一项等于下一项。因此,使用递推的算法可以很容易实现,即F(n)=F(n - 1)+F(n - 2)。
Skykguj
2022/09/09
5790
斐波那契数列的四种实现
孔乙己自己知道不能和他们谈天,便只好向 Intern 说话。有一回对我说道,“你写过代码么?”我略略点一点头。他说,“写过代码,……我便考你一考。斐波那契数列的输出,怎样实现?”我想,讨饭一样的人,也配考我么?便回过脸去,不再理会。孔乙己等了许久,很恳切的说道,“不能写罢?……我教给你,记着!这些代码应该记着。将来做 Leader 的时候,开发项目要用。”我暗想我和 Leader 的等级还很远呢,而且我们 Leader 也从不在项目里写斐波那契;又好笑,又不耐烦,懒懒的答他道,“谁要你教,不是递归么?”孔乙己显出极高兴的样子,将两个指头的长指甲敲着键盘,点头说,“对呀对呀!……斐波那契有四样写法,你知道么?”我愈不耐烦了,努着嘴走远。孔乙己刚在命令行打开 Vim,想在里面写代码,见我毫不热心,便又叹一口气,显出极惋惜的样子。
Crossin先生
2020/02/21
7150
Python学习笔记1——斐波那契数列
这是一个高中同学问我的问题,本来是用C来写的,正好正在学Python,就用Python重写了一遍当作练习。 下面是题目要求: 一道很简单的题目,但有些细节还是要注意的,我第一次写的代码在细节上就不是很完美。 首先来看看什么是Fibonacci数列。 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
企鹅号小编
2018/01/23
1.3K0
Python学习笔记1——斐波那契数列
C++实现斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
week
2018/08/24
3220
Python如何实现斐波那契数列?
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
程序员小猿
2021/01/19
3710
每天一道剑指offer-牛客网斐波那契数列
题目详述 大家都知道斐波那契数列,现在要求输入一个整数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 Overflo
乔戈里
2019/09/17
3490
使用Java打印斐波那契数列的三种方法
性能类型:https://blog.csdn.net/acecandy/article/details/83864763
阮键
2020/06/18
2.1K0
算法之路(三)----查找斐波纳契数列中第 N 个数
斐波那契数列满足公式f(n) = f(n-1) + f(n-2),n > 0。这里我们的第一想法是使用递归,可是直接翻译公式出来的递归调用是这样的:
Haley_Wong
2018/08/22
5490
《JavaSE-习题篇二》之七个题目,十六张图,让你不惧递归。
学习方法后,我们来学习一种特殊调用方法的方式,即递归。本篇文章将介绍什么是递归,以及递归的使用规则和注意事项,最后通过几道经典的题目来加深对递归的理解。
用户10517932
2023/10/07
2100
《JavaSE-习题篇二》之七个题目,十六张图,让你不惧递归。
python实现斐波那契数列
斐波那契数列的发明者是意大利数学家昂纳多.斐波那契(Leonardo Fibonacci)。斐波那契数列又被称为黄金分割数列,或兔子数列。它指的是这样一个数列:0 1 1 2 3 5 8 13 21 34 ....在数学上,斐波那契数列以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2(N>=2,n属于N*)。简单的说明斐波那切数列的规律为:第1个数为0,第2个数为1,之后每个数值都是前两位的和。
py3study
2020/01/14
5270
《剑指offer》第九天:斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第 n 项(从 0 开始,第 0 项为 0)。n<=39
程序员小浩
2020/08/14
3980
剑指Offer的学习笔记(C#篇)-- 斐波那契数列
        斐波那契数列概念:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”(来自百度百科)。具体可由以下公式表示:
WeiMLing
2022/05/06
4190
剑指Offer的学习笔记(C#篇)-- 斐波那契数列
面试题精选:神奇的斐波那契数列
斐波那契数列,其最开始的几项是0、1、1、2、3、5、8、13、21、34…… ,后面的每一项是前两项之和,事实上,斐波那契在数学上有自己的严格递归定义。
xindoo
2021/01/22
7890
面试题精选:神奇的斐波那契数列
斐波那契数列题型汇总
(注:暂时先记录这些问题,后期会持续更新) 斐波那契数列介绍 特点:头两项均为1,后面任一项都是其前两项之和。 程序在计算中需要用两个变量存储最近产生的两个序列值,且产生了新数据后,两个变量要更新。 问题1:输出斐波那契数列的前十项。 int i,x1,x2,x; x1=1; //头两项都是1 x2=1; printf("%6d%6d",x1,x2); for(i=1;i<=8;i++){ //循环输出后8项 x=x1+x2; //计算新项
Zoctopus
2018/06/04
7880
相关推荐
剑指Offer(六)--斐波那契数列
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验