剑指offer之青蛙跳台阶问题
1 问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级的台阶总共有多少种跳法?
2 分析
我们可以定位函数f(n),n为n级别的台阶,f(n)的值是青蛙有多少种跳法,我们知道当n为1的时候,f(1) = 1;
当n为2的时候,我们知道可以先跳一级再跳一级,或者直接跳2级,这里就有2种跳法,所以f(2) = 2;
当n为3的时候,我们可以这样理解,青蛙先跳一级,后面还有n-1级需要跳,所以这里的跳法为f(n - 1);
或者青蛙先跳两级,后面还有n-2级需要跳,所以这里的跳法为f(n - 2); 所以我们知道当n大于2时,f(n) = f(n - 1) + f(n - 2);
f(1) = 1; (n = 1)
f(2) = 2; (n = 2)
f(n) = f(n - 1) + f(n - 2); (n > 2)
3 代码实现
#include <stdio.h>long long fibonacciOne(unsigned int n)
{if (n <= 0)return 0;if (n == 1)return 1;if (n == 2)return 2;return fibonacciOne(n - 1) + fibonacciOne(n - 2);
}long long fibonacciTwo(unsigned int n)
{if (n <= 0)return 0;if (n == 1)return 1;if (n == 2)return 2;long long first = 1;long long second = 2;long long sum = 0;for (int i = 3; i <=n ; ++i){sum = first + second;first = second;second = sum;}return sum;
}int main(void)
{long long resultOne = fibonacciOne(4);long long resultTwo = fibonacciTwo(4);printf("resultOne is %lld\n", resultOne);printf("resultTwo is %lld\n", resultTwo);return 0;
}
4 运行结果
resultOne is 5
resultTwo is 5
剑指offer之青蛙跳台阶问题相关推荐
- 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java
<LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...
- 【LeetCode】剑指 Offer 10- II. 青蛙跳台阶问题
[LeetCode]剑指 Offer 10- II. 青蛙跳台阶问题 文章目录 [LeetCode]剑指 Offer 10- II. 青蛙跳台阶问题 一.动态规划 总结 一.动态规划 class So ...
- 剑指 Offer 10- II. 青蛙跳台阶问题 -递归法和数学递推法
剑指 Offer 10- II. 青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007), ...
- LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题
LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题 动态规划的思想,青蛙每次可以跳一个或两个台阶,要想得到最终青蛙跳n阶台阶的方法数,需要找到青蛙跳n-1个台阶的方法数和跳n-2个台 ...
- 剑指Offer 10- II—青蛙跳台阶问题
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008, ...
- 【剑指 Offer 46. 把数字翻译成字符串】【剑指 Offer 10- II. 青蛙跳台阶问题】【198. 打家劫舍】【动态规划】
青蛙跳台阶,打家劫舍,字母相同编码三道题思路总结 总结我自己思路的,写的不详细,想看详细的可以跳转到我加的链接,都是力扣上同一个人写的题解,很厉害. 字符串翻译数字 字符串翻译数字 当最后一位数字单独 ...
- 剑指 Offer 10- I. 斐波那契数列/剑指 Offer 10- II. 青蛙跳台阶问题
2020-07-02 1.题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少 ...
- 【剑指Offer】青蛙跳台阶问题
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. import java.util.*; public class FrogAn ...
- 剑指offer之青蛙跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 求解思路 刚开始是想要通过递归模拟求解,结果超时了.但是这样肯定能求出 ...
最新文章
- 异步发送邮件、短信、微信
- BZOJ 3694DTOJ 1972: 最短路
- docker随着主机启动 自动启动设置
- Java通过JDBC操作Hive
- day inset_按 SetPrinter API 修改打印机设置 - Application Developer | Microsoft Docs
- 适配器模式在Mybatis中的妙用
- 集群节点基于Hadoop集群的HBase集群的配置【2】
- HttpResponse类
- python网络虫营销_python与sem,大数据降低竞价推广成本利器
- 如何关闭MyEclipse自动更新
- 基于Python的SVM算法深入研究
- 如何查看计算机的硬盘序列号,电脑上的硬盘序列号如何查
- vue echarts在中国地图让某个省份凸起
- uni-app生成分享图片( 使用 Painter 生成分享海报)
- 海康IPCamera结合OpenCV图像处理的一般步骤
- (四十二):Aligning Linguistic Words and Visual Semantic Units for Image Captioning
- 如何成为一名优秀的企业管理者
- OpenCV函数库查询手册(python)
- 简单易用的公司网页模板,助您快速建站
- 小散量化炒股记|股价如波浪起伏,教你用量化识别波段的极值点
热门文章
- .NET 大会今日开幕 |这些白嫖福利不看肠子都悔青
- C# 外接(网口)双摄像头视频获取
- 不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!
- IdentityServer4系列 | 常见术语说明
- 台湾RD技术谈|嘉宾郭家齊董大偉黃保翕
- 使用ImpromptuInterface反射方便的创建自定义DfaGraphWriter
- .NET Core开发实战(第30课:领域事件:提升业务内聚,实现模块解耦)--学习笔记...
- .NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记...
- 【在路上2】快递的运单轨迹
- 基于 Kubernetes 的 CICD 基础设施即代码