青蛙跳台阶算法

一、问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共需要多少种跳法。

思路:首先考虑n等于0、1、2时的特殊情况,f(0) = 0   f(1) = 1  f(2) = 2 其次,当n=3时,青蛙的第一跳有两种情况:跳1级台阶或者跳两级台阶,假如跳一级,那么 剩下的两级台阶就是f(2);假如跳两级,那么剩下的一级台阶就是f(1),因此f(3)=f(2)+f(1)  当n = 4时,f(4) = f(3) +f(2),以此类推...........可以联想到Fibonacci数列。 因此,可以考虑用递归实现。但是递归算法效率低下,也可考虑迭代实现。

1、递归算法

public static long Faci(long n){if (n==0){return 0;}if (n==1){return 1;}if (n==2){return 2;}else{return Faci(n - 1) + Faci(n - 2);}}
View Code

2、迭代算法

public static long JumpFloor(long n){long former1 = 1;long former2 = 2;long target = 0;if (n==0){return 0;}if (n==1){return 1;}if (n==2){return 2;}else{for (int i = 3; i <= n; i++){target = former1 + former2;former1 = former2;former2 = target;}return target;}}
View Code

3、分析结果

  用递归算法是,当n大于40时,非常的满。用迭代算法的话,基本上是立刻得到答案。

二、问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级,也可以跳三级。求该青蛙跳上一个n级的台阶总共需要多少种跳法。

1、迭代算法

/ public static long JumpFloor(long n){long number1 = 1;long number2 = 2;long number3 = 4;long target = 0;if (n==0){return 0;}if (n==1){return 1;}if (n==2){return 2;}if (n==3){return 4;}else{for (int i = 4; i <= n; i++){target = number1 + number2 + number3;number1 = number2;number2 = number3;number3 = target;                    }return target;}}
View Code

 

转载于:https://www.cnblogs.com/minrh/p/8496549.html

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

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

相关文章

[css] 请说下你对css对象模型(CSSOM)的理解

[css] 请说下你对css对象模型(CSSOM)的理解 CSSOM 是一组允许 JavaScript 操作 CSS 的 API。它非常类似于 DOM&#xff0c;但是用于 CSS 而不是 HTML。它允许用户动态读取和修改 CSS 样式。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0…

HSSFCellStyle.ALIGN_CENTER报错

HSSFCellStyle.ALIGN_CENTER报错&#xff0c;是因为版本问题 将 hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 修改为&#xff1a;hssfCellStyle.setAlignment(HorizontalAlignment.CENTER);

linux 查看磁盘空间大小

Ubuntu 查看磁盘空间大小命令 df -h Df命令是linux系统以磁盘分区为单位查看文件系统&#xff0c;可以加上参数查看磁盘剩余空间信息&#xff0c;命令格式&#xff1a; df -hl 显示格式为&#xff1a; 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% M…

[css] 使用overflow: scroll时不能平滑滚动怎样解决?

[css] 使用overflow: scroll时不能平滑滚动怎样解决&#xff1f; scroll-behavior: smooth;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

POI导出EXCEL设置高度和宽度

-------------------------------------------------------------------------------SSFRow hssfRow sheet.createRow(0);//创建表头hssfRow.setHeight((short)1000); //设置行高 sheet.setColumnWidth(列的下标, 256*30); //设置某一列宽度POI导出EXCEL设置跨行跨列&#xff…

[css] 用css实现倒影的效果

[css] 用css实现倒影的效果 box-reflect个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

router+x

vue-router官方的路由管理器 包含的功能&#xff1a; ——绑定方法进行跳转 路由嵌套 写的不一样搜索的路由路径也不一样 二级路由 设置默认路由 导航守卫&#xff1a; 用于强制跳转或者取消的方式守卫导航。 例如&#xff1a;未登录页面的时候&#xff0c;不允许用户跳转到其他…

mybatis查询返回空,SQL数据库执行有数据!

我的数据库为Oracle&#xff0c;可以插入&#xff0c;更新&#xff0c;但在在Mybatis中执行SQL查询返回的数据发现返回NULL&#xff0c;但是生成SQL放在数据库中查询是有数据的&#xff0c;并且SQL是正确的&#xff01; 这是没有改动的XML: <select id"findAllByParen…

枚举类型

/** 由SharpDevelop创建。* 用户&#xff1a; Administrator* 日期: 2018/10/12* 时间: 20:53* * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件*/ using System;namespace lianxi10{enum GameState{Pause,Failed,Success,Start }class Program{public static void …

[css] 用css实现饼图效果

[css] 用css实现饼图效果 方法一、使用伪元素 transform css渐变实现.pie {width: 100px;height: 100px;border-radius: 50%;background: yellowgreen;background-image: linear-gradient(to right, transparent 50%, #655 0);}.pie::before {content: ;display: block;marg…

eclipse编辑js卡死解决方案

1、取消验证 windows–>perferences–>validation 把 除了manual 下面的全部点掉&#xff0c;build下只留 classpath dependency Validator 2、关闭拼写检查 windows–>perferences–>general–> editors->Text Editors->spelling 3、对于MyEclipse来讲&a…

[css] 怎么使用纯css实现左右拉伸拖动?

[css] 怎么使用纯css实现左右拉伸拖动&#xff1f; 核心属性 resize:horizontal个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

JS两个字符串日期相减得出天数

function DateMinus(date1,date2){//date1:小日期 date2:大日期var sdate new Date(date1); var now new Date(date2); var days now.getTime() - sdate.getTime(); var day parseInt(days / (1000 * 60 * 60 * 24)); return day; }

STM32位带操作实现过程解析

编辑这篇文档时候&#xff0c;听说相关的解析过程在《Cortex-M3权威指南》里有详细讲解。 前几日被一个跑马灯语句勾引 LED1!LED1; 于是深入探究一下这句话的实现过程。 #include "led.h" #include "delay.h" #include "sys.h" #define LED0 PAo…

[css] 举例说明attr()的使用场景

[css] 举例说明attr()的使用场景 css content 的 attr() 呀&#xff0c;开始还以为是 jquery 的 attr()可以用于 tooltips可以用于多个内容文本替换&#xff0c;比如菜单效果存放 i18n 信息总的来说&#xff0c;是将一些文本存在 html 中&#xff0c;在 css 中可以被使用。个人…

easyui-datebox禁止手动输入

方式 1<input name"myname" id"myid" type"text" class"easyui-datebox" editable"fasle" />关键就在于editable"fasle"这个属性&#xff0c;这样用户就只能通过鼠标点击输入日期了。方式2$(#myid).datebox…

JDK 1.5新特性

1.可变参数 public void add(int... nums){int sum 0;for(int i0; i<nums.length; i){sum nums[i];}System.out.println(sum); } 注意&#xff1a;当有多种参数时&#xff0c;可变参数放在最后 2.foreach public void add(int[] nums){int sum 0;for(int num : num…

[css] 你有使用:valid和:invalid来校验表单吗?

[css] 你有使用:valid和:invalid来校验表单吗&#xff1f; 很不好控制&#xff0c;拿必填来举例&#xff0c;:invalid 标红。 初始时就红的&#xff0c;那 :focus:invalid 吧&#xff0c;blur 就不标了&#xff1b; 刚 focus 就标红&#xff0c;不见得是设计想要的&#xff0c…

java EE : tomacat 基础

tomacat 目录结构 conf 配置文件 server.xml 转载于:https://www.cnblogs.com/Lumia1020/p/9802850.html

[css] 使用css写一个水平翻转文字的效果

[css] 使用css写一个水平翻转文字的效果 letter-spacing: -2em; box-reflect: below;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题