面试题:Fibonacci数列

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

方法1:递归

public class Solution {public int Fibonacci(int n) {if (n == 0){return 0;} else if(n == 1){return 1;} else{return Fibonacci(n - 1) + Fibonacci(n - 2);}}
}

方法2:循环

public class Solution {public int Fibonacci(int n) {if(n == 0){return 0;}else if(n == 1){return 1;}else{int a = 0;int b = 1;int f = 0;for(int i=1;i<n;i++){f = a + b;a = b;b = f;}return f;}}
}

递归是函数调用函数自身,循环是通过初始值和终止条件在一个范围内重复计算

基于递归实现的函数代码简单,但性能不如基于循环的方法,如果没有别的要求优先使用递归

递归的缺点是函数的调用有时间和空间的消耗,并且递归中有许多重复的计算

类似题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

public class Solution {public int JumpFloor(int target) {if(target == 0){return 0;}else if(target == 1){return 1;}else if(target == 2){return 2;}else{//递归//return JumpFloor(target-1)+JumpFloor(target-2);//循环int a = 1;int b = 2;int J = 0;for(int i=2;i<target;i++){J = a + b;a = b;b = J;}return J;}}
}

类似题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法(数学归纳法2的n-1次方)。

public class Solution {public int JumpFloorII(int target) {return (int)Math.pow(2,(target-1));}
}

 

转载于:https://www.cnblogs.com/Aaron12/p/9503761.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/451566.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/451566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“行到水穷处,坐看云起时.“

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 自由自在&#xff0c;随意而行&#xff0c; 只沿着流水向上&#xff0c;不知不觉的就走到了泉眼尽头&#xff0c; 无路可走的时候 &…

git commit -m和git commit -am

字面解释的话&#xff0c;git commit -m用于提交暂存区的文件&#xff1b;git commit -am用于提交跟踪过的文件 要理解它们的区别&#xff0c;首先要明白git的文件状态变化周期&#xff0c;如下图所示 工作目录下面的所有文件都不外乎这两种状态&#xff1a;已跟踪或未跟踪。已…

磁盘结构简介

这里讲的主要是网上所谓的老式磁盘&#xff0c;它是由一个个盘片组成的&#xff0c;我们先从个盘片结构讲起。如图1所示&#xff0c;图中的一圈圈灰色同心圆为一条条磁道&#xff0c;从圆心向外画直线&#xff0c;可以将磁道划分为若干个弧段&#xff0c;每个磁道上一个弧段被称…

java中的对象监视器

参考文章&#xff1a;监视器–JAVA同步基本概念 感谢作者分享&#xff01;

Yii1.1 CGridView 简单使用

Yii1.1 CGridView 简单使用 配置model文件&#xff0c;返回CActiveDataProvider对象。public function search() {$criterianew CDbCriteria;$criteria->compare(title,$this->title,true);$criteria->compare(type,$this->type);$criteria->compare(addr,$this…

3个著名加密算法(MD5、RSA、DES)的解析

MD5的全称是Message-Digest Algorithm 5&#xff0c;在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明&#xff0c;经MD2、MD3和MD4发展而来。 MD5将任意长度的“字节串”变换成一个128bit的大整数&#xff0c;并且它是一个不可逆的字符串变换算法&#x…

想念我的大大的石

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 // ------- 甘愿用我的一生去追寻 ... 想念我的大石头&#xff1a; 想念会默默陪着我&#xff0c;一直从烈日咫尺坐到黄昏浸透蔓蔓云层…

Java 中的悲观锁、乐观锁、自旋锁、适应性自旋锁、偏向锁、轻量级锁、重量级锁、公平锁、非公平锁、可重入锁、共享锁等

参考文献&#xff1a; 不可不说的Java“锁”事 java并发进阶 感谢美团技术团队&#xff01; 感谢JavaGuide&#xff01;

Git 的origin和master解析

首先要明确一点&#xff0c;对git的操作是围绕3个大的步骤来展开的&#xff08;其实几乎所有的SCM都是这样&#xff09; 1. 从git取数据&#xff08;git clone&#xff09; 2. 改动代码 3. 将改动传回git&#xff08;git push&#xff09; 这3个步骤又涉及到两个re…

end to end testing

概念 https://www.softwaretestinghelp.com/what-is-end-to-end-testing/ What is “End to End Testing”? Term “End to End testing” is defined as a testing method which determines whether the performance of an application is as per the requirement or not. It…

windows下安装mysql 开机启动

1 下载地址 http://dev.mysql.com/downloads/installer/ 2 下载版本 mysql community server 5.7.x 这个版本是一个傻瓜版本&#xff0c;设置root密码之后就可以启动服务了&#xff0c;不用自己配置&#xff0c;还有workbench可用。转载于:https://www.cnblogs.com/hustdc/p/91…

Linux目录架构详解

Linux和Windows操作系统的显著区别之一就是目录架构的不同。Linux操作系统的目录架构遵循文件系统层级结构标准。不知你是否使用ls命令浏览过Linux的根目录“/”&#xff0c;亲爱的读者&#xff0c;您都了解这些目录的含义吗&#xff1f; ls -l / 遍历文件系统&#xff08;点击…

越阳光明媚....

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 窗外阳光明媚&#xff0c;而心却如此哀伤... 很喜欢阳光明媚&#xff0c;很喜欢春暖花开&#xff0c; 窗外有几片庄稼地&#xff1a;满…

Linux的学习:

查看端口&#xff1a; netstat -anop | grep 80 netstat -ntlp 先看看不带n的 再看看带n的 我们发现在local address 即主机地址这一栏中&#xff0c;如果没有带n选项&#xff0c;会将套接字所对应的域名解析出来&#xff0c;如果加上n选项&#xff0c;那么就不会显示&#xff…

基于TCP协议的Socket通信

参考文章&#xff1a; Socket学习网络基础准备 基于TCP协议的Socket通信(1) 基于TCP协议的Socket通信(2) 感谢菜鸟分享&#xff01;

git pull命令

git pull命令作用&#xff1a;从另一个存储库或本地分支关联的远端分支获取最新代码&#xff0c;并与本地代码资源整合。git pull命令执行过程&#xff1a;取回远程主机某个分支的更新&#xff0c;再与本地的指定分支合并&#xff08;可能存在需手动解决的冲突&#xff09;。 …

RPM的用法

RPM 有五种基本的操作方式(不包括创建软件包): 安装, 卸载, 升级, 查询,和验证。 下面我们就来逐一的讲解吧。 一、 安装RPM包 RPM 软件包通常具有类似foo-1.0-1.i386.rpm 的文件名。其中包括 软件包的名称(foo)&#xff0c;版本号(1.0)&#xff0c;发行号(1)&#xff0c; 和 硬…

Unix 多进程编程

一.多进程程序的特点由于UNIX系统是分时多用户系统, CPU按时间片分配给各个用户使用, 而在实质上应该说CPU按时间片分配给各个进程使用, 每个进程都有自己的运行环境以使得在CPU做进程切换时不会"忘记"该进程已计算了一半的"半成品". 以DOS的概念来说, 进程…

Redis单线程模型是什么?

参考文章&#xff1a; redis 单线程的理解 谢谢作者分享&#xff01;

寂静的时候

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 每每听到熟悉的旋律&#xff0c;终又会骤然就无法抑制排山倒海般的忧伤... 就这样想往若已经年迈到只能坐在夕阳余晖里遥望远方该多好.…