斐波那契数列 青蛙跳台阶 变态跳台阶

目录

一、斐波那契数列

二、青蛙跳台阶问题

三、变态跳台阶


一、斐波那契数列

题目:写一个函数,输入n,求斐波那契数列的第n项。

思路:用递归的方法,f(n) =f(n-1) + f(n-2)。代码比较简单。

#include<iostream>
using namespace std;int Fibonacci(int n)
{if(n <= 0){return 0;}if(n == 1){return 1;}return Fibonacci(n-1)+Fibonacci(n-2);
}int main()
{cout << Fibonacci(-1) << " ";cout << Fibonacci(0) << " ";cout << Fibonacci(1) << " ";cout << Fibonacci(2) << " ";cout << Fibonacci(3) << " ";cout << Fibonacci(4) << " ";cout << Fibonacci(5) << " ";return  0;
}

上面的代码如果n的值较大,递归的次数较多,就会造成栈溢出。

代码优化:

思路:可以用循环将数字从开始加到n。

#include<iostream>
using namespace std;int Fibonacci(int n)
{int f1 = 1;int f2 = 1;int f3 = 0;if(n <= 0){return 0;}if(n == 1 || n == 2){return 1;}while(n > 2){f3 = f1+f2;f1= f2;f2= f3;n--;}return f3;
}int main()
{cout << Fibonacci(-1) << " ";cout << Fibonacci(0) << " ";cout << Fibonacci(1) << " ";cout << Fibonacci(2) << " ";cout << Fibonacci(3) << " ";cout << Fibonacci(4) << " ";cout << Fibonacci(5) << " ";return  0;
}

 

二、青蛙跳台阶问题

题目:一只青蛙一次可以跳上1级台阶,也可以跳2级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法。

思路:一级台阶只有一种跳法。两级台阶可以一次跳一级,也可以一次跳两级,一共两种方法。如果是三级的话,就是从二阶或者从一阶跳上来,以此类推,所以可以用递归的方式。

#include<iostream>
using namespace std;int JumpFloor(int n)
{if( n <= 0){return 0;}if( n == 1 || n == 2 ){return n;}return JumpFloor(n-1) + JumpFloor(n-2);
}int main()
{cout << JumpFloor(0) << endl;cout << JumpFloor(1) << endl;cout << JumpFloor(2) << endl;cout << JumpFloor(3) << endl;cout << JumpFloor(4) << endl;cout << JumpFloor(5) << endl;return 0;
}

代码优化,思路和上面的例子相同。

#include<iostream>
using namespace std;int JumpFloor(int n)
{if( n <= 0){return 0;}if( n == 1 || n == 2){return n;}int f1 = 1;int f2 = 2;int f3 = 0;while(n > 2){f3= f1+f2;f1 = f2;f2 = f3;n--;}return f3;
}int main()
{cout << JumpFloor(0) << endl;cout << JumpFloor(1) << endl;cout << JumpFloor(2) << endl;cout << JumpFloor(3) << endl;cout << JumpFloor(4) << endl;cout << JumpFloor(5) << endl;return 0;
}

三、变态跳台阶

题目:一只青蛙一次可以跳上1级台阶,也可以跳2级台阶, ... 也可以跳上n级。求该青蛙跳上一个n级台阶总共有多少种跳法。

思路:当有一级台阶时,跳法::0->1。

            当有二级台阶时,跳法: 0->1->2 ,0->2。

            当有三级台阶时,跳法: 0->1->2->3,0->1->3, 0->2->3, 0->3。

            当有四级台阶时,跳法: 0->1->2->3->4,0->1->2->4,0->1->3->4, 0->1->4,0->2->3->4,0->2->4,0->3->4,0->4。

规律:f(n) = 2^(n-1)。

#include<iostream>
using namespace std;int JumpFloor(int n)
{if(n <= 0){return 0;}if(n == 1 || n == 2){return n;}return 2 *JumpFloor(n-1) ;
}int main()
{cout << JumpFloor(-1) << endl;cout << JumpFloor(0) << endl;cout << JumpFloor(1) << endl;cout << JumpFloor(2) << endl;cout << JumpFloor(3) << endl;cout << JumpFloor(4) << endl;cout << JumpFloor(5) << endl;
}

优化:

int JumpFloor(int n)
{if(n <= 0){return 0;}if(n == 1){return 1;}int count = 1;while(n-1 != 0){count *= 2;n--;}return count;
}int main()
{cout << JumpFloor(-1) << endl;cout << JumpFloor(0) << endl;cout << JumpFloor(1) << endl;cout << JumpFloor(2) << endl;cout << JumpFloor(3) << endl;cout << JumpFloor(4) << endl;cout << JumpFloor(5) << endl;
}

 

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

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

相关文章

python history函数_python的history_n 和history函数 获取的成交量和持仓量出现翻倍

使用的最新的掘金者3。用python sdk调用 history_n 和history函数获取日k线&#xff0c;出现有的活约交易日的成交量和持仓量翻倍了,有的日期又是正确的。比如动力煤 ZC2001 对应代码CZCE.ZC001&#xff0c;获取 2019-05-20 这天的日线数据出现翻倍交易量是 2464.000000持仓量 …

math python 向上取整_计算机等级考试二级Python语言模拟试卷单选解答详解第1期...

模拟试卷单选题20题有粉丝私信希望增加一些针对国家二级Python考级的小练习和答题详解。所以就有了模拟试卷的题目讲解。第1题&#xff1a;下面的程序运行结果是&#xff08; &#xff09;解答&#xff1a;这是一个变量作用域的问题&#xff0c;变量分为全局变量和局部变量。a1…

将字符转换成数字(atoi),将数字转换成字符(itoa)

目录 一、将字符转换为数字。 二、将数字转换成字符。 一、将字符转换为数字。 &#xff08;首先字符必须是"0" —"9"&#xff0c;然后转换成十进制的数字&#xff09; 比如将"1234" 转换成 1234 #include<stdio.h> #include<st…

visio2013复制到word有多余白边_学习工坊(一)|实用技巧之Word篇

Word那些你不知道的实用小技巧让你工作更快捷大家无论学习还是工作总离不开Word软件吧今天推给大家几个实用的Word小技巧从此快人一步开启Word新世界1、Word的分屏在编辑Word文字的时候有时候需要对照前后文但是一直上下翻找是否会感觉很麻烦这里悄悄告诉大家Word可以分屏哦我们…

san分布式共享文件系统_SAN网络存储共享软件全攻略剖析

在高性能专用存储网络需求的驱使下&#xff0c;SAN存储区域网络系统大量应用于高性能计算网络系统、大型网站系统、非线性编辑系统等网络系统中&#xff0c;存储设备与计算机主机系统之间一对一的关系&#xff0c;被可供多个系统共享同一个存储设备网络的关系所取代。为确保多大…

怎么看调用的接口_SpringCloud服务间调用

本篇简介在上一篇我们介绍了SpringCloud中的注册中心组件Eureka。Eureka的作用是做服务注册与发现的&#xff0c;目的是让不同的服务与服务之间都可以通过注册中心进行间接关联&#xff0c;并且可以通过注册中心有效的管理不同服务与服务的运行状态。但在微服务的架构中&#x…

bimmercode刷隐藏教程_PS教程:快速提取人物像素,制作人物海报主体,简单易学...

这一篇主要是教大家快速提取人物像素&#xff0c;制作人物海报主体。主要是用快速复制移动快捷键(alt方向键)、单列框选工具、变形工具进行操作&#xff0c;简单快速。人物素材通过抠图得到&#xff0c;抠图方法用的是快速选择工具选择并遮住&#xff0c;这里就不说具体了&…

cass生成曲线要素文件_《CASS道路断面法施工技术》

技术分享&#xff0c;研究很久&#xff0c;分享一套CASS处理道路断面的施工方法技术&#xff0c;不懂的欢迎留言。CASS应用于道路类工程计算/ 1 /绘制道路中线道路中线一般由直线、圆曲线、缓和曲线段组成的复合线。CASS软件我们使用菜单中“公路曲线设计”生成。1、录入要素文…

dnf机械机器人补丁_干货 | 详解工业机器人控制系统架构

机械臂和移动机器人两种工业机器人的特点你知道吗&#xff1f;下面我们对比一下二者的控制系统方案。以上分类是根据应用对象&#xff0c;此外&#xff0c;市面上更多的是通用型运动控制器&#xff0c;即控制非标设备的。1 控制器底层方案1.1 机械臂类机械臂类的控制器发展较…

项目的ar指什么_AR眼镜显示测评标准解读——概述

AR眼镜检测哪些AR眼镜作为近眼显示设备的一种&#xff0c;运用其显示系统实现了虚拟信息与真实世界相叠加的效果&#xff1b;AR眼镜显示性能指标影响着AR产品实际的体验效果。因此&#xff0c;如何客观评价AR眼镜显示技术指标尤为重要。AR眼镜的性能特征和技术参数主要包括光学…

我的JAVA

一、了解Java Java是一门重编译语言&#xff0c;它本身就包含了许多类库、特性&#xff0c;再加上它所衍生出来的相关产品&#xff0c;是一个很庞大的语言体系&#xff0c;拥有无数分支&#xff0c;核心是JDK和JRE。 JDK&#xff0c;英文全称是Java Development Kit&#xff0c…

11下滑半个屏幕_努比亚发布手表手机:柔性屏幕,体积感人

2月26日凌晨&#xff0c;努比亚在MWC2019展会上召开新品发布会&#xff0c;全新的柔性屏“腕机”努比亚α正式与我们见面。努比亚α采用一块960*192分辨率的4英寸柔性屏&#xff0c;视野比手表类产品更广阔。同时为了让弯折的过程中不易出现起皱等问题&#xff0c;努比亚还使用…

Java-02

JAVA工作方式 源程序(myProgram.java) – > 编译(javac myProgram.java) -> JAVA字节码(myProgram.class) ->运行(java myProgram) 指令&#xff1a; 编译时&#xff1a;javac(compiler) 文件名运行时&#xff1a;java 文件名 JAVA的程序结构 源文件>类>方法&…

关于数组的下标越界

数组是用来存储数据的。数组是定长的连续的内存片段。因为数组的定长性&#xff0c;我们可以对数组进行多种操作。本篇记录的就是因为数组的定长性引起的下标越界问题。 首先&#xff0c;我们定义一个数组。 int a new int [5];这表示我们定义了一个Int 型&#xff0c;长度为5的…

开机一直转圈_电脑开机后网络一直转圈,程序也打不开?

问题描述&#xff1a;最近&#xff0c;笔记本电脑开机之后&#xff0c;网络图标一直转圈&#xff0c;任何应用程序也打不开&#xff0c;开机关机还是可以的&#xff0c;之前是偶尔发生这种情况&#xff0c;然后重启一下或许就行了&#xff0c;但最近每次开机都是这个情况&#…

JAVA出现空指针异常(初学者)

在初学JAVA时&#xff0c;讲到面向对象就会出现空指针异常的情况。这是很常见很普通的错误&#xff0c;鉴于最近代码报错都是这个原因。 故收集一些资料方法备用。&#xff08;java.long.nullpointerexception 空指针异常&#xff09; 在面向对象的语言中&#xff0c;指针也是…

斯皮尔 皮尔森 肯德尔_一起来学应用统计学(全部)(二)持续更新

应用统计基本内容(简略版)描述统计&#xff1a;统计图表&#xff0c;集中趋势(平均数&#xff0c;中数&#xff0c;众数)&#xff0c;离散趋势(极差&#xff0c;离均差&#xff0c;平均差&#xff0c;方差&#xff0c;标准差&#xff0c;差异系数&#xff0c;z分数)数学基础(概…

java.lang.StackOverflowError递归的栈溢出错误

递归在JAVA中是指方法本身调用自己&#xff0c;以此来解决问题普通循环不太容易解决的问题。 递归能解决一些特定的问题&#xff0c;但相对的也有其缺点。递归运行速度较慢&#xff0c;在递归调用过 程中系统为每一层返回点&#xff0c;局部量等提供栈来存储。因为这个特性&a…

19生成材料清单_SOLIDWORKS 钣金装配体材料明细表扩展应用

【问题描述】&#xff1a;我们都知道&#xff0c;SOLIDWORKS装配体可以直接生成材料明细表&#xff0c;我们可以通过材料明细表查看详细的零件属性。例如零件名称、数量和材质等等。对于只包含钣金零件的装配体&#xff0c;我们是否可以在装配体材料明细表中表示钣金零件的展开…

初学JAVA,javaoo小结

一&#xff0c;面向对象的四个特征1&#xff0c;封装&#xff1a;把类中的数据私有化 &#xff0c;提供get 和set 方法 &#xff0c;重写toStirng 方法 写无参构造方法 2&#xff0c;子类继承父类 &#xff0c;继承父类的一切非私有方法和属性&#xff0c;调用父类的无参构造方…