#剑指offer Day3 一类 “ 斐波那契 ”问题
发布日期:2021-07-27 05:04:48
浏览次数:6
分类:技术文章
本文共 1330 字,大约阅读时间需要 4 分钟。
#剑指offer Day3 一类 “ 斐波那契 ”问题
1. 思路
斐波那契(Fibonacci)数列是经典的递归问题。可由下式表示:
F ( n ) = { 0 , n = 0 1 , n = 1 F ( n − 1 ) + F ( n − 2 ) , n > = 2 F(n)=\begin{cases} 0,n=0\\ 1, n=1 \\ F(n - 1) + F(n-2), n>=2\end{cases} F(n)=⎩⎪⎨⎪⎧0,n=01,n=1F(n−1)+F(n−2),n>=2 但要注意:递归方便书写,但是递归要是很深的话,有可能造成栈溢出。2. 相关题目
-
第8题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析:对于第n个台阶来说,只能从n-1或者n-2的台阶跳上来,所以 F(n) = F(n-1) + F(n-2),这正是本文所说类型。
最暴躁的解法:自底向上 int FrogJumping(int n){ if(n < 0) return -1; if(n == 0 || n == 1 || n == 2) return n; return FrogJumping(n - 1) + FrogJumping(n - 2);} // 若n很大,递归程度很深,容易爆栈。迭代求解:自顶向下int jumpFloor(int number) { int t1 = 1, t2 = 2, total = 0; if (number == 1 || number == 2) return number; for(int i = 3;i <= number;i++) { total = t1 + t2; t1 = t2; t2 = total; } return total; }
-
第 9 题:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析:每个台阶可以看作一块木板,让青蛙跳上去,n个台阶就有n块木板,最后一块木板是青蛙到达的位子,必须存在,其他 (n-1) 块木板可以任意选择是否存在,则每个木板有存在和不存在两种选择,(n-1) 块木板就有 [2^(n-1)] 种跳法,可以直接得到结果。
int jumpFloor(int number) { if (number == 1 || number == 2) return number; return 2 * jumpFloor(number - 1); }
-
第10题:我们可以用2 * 1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2 * 1的小矩形无重叠地覆盖一个2 * n的大矩形,总共有多少种方法?
比如n=3时,2*3的矩形块有3种覆盖方法:
分析:
所以还是斐波那契数列,和上面的青蛙跳台阶是一样的编程思路。
转载地址:https://blog.csdn.net/qq_45434780/article/details/114682869 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年09月09日 18时55分36秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
nginx的location匹配规则----nginx的学习之路
2019-05-27
nginx的rewrite 指令
2019-05-27
nginx的虚拟主机功能(nginx多站点,绑定多个域名)-----nginx的学习之路
2019-05-27
Spawn-fcgi与PHP-FPM区别
2019-05-27
3种PHP连接MYSQL数据库的常用方法
2019-05-27
linux命令(6) zip/unzip及tar压缩与解压文件命令笔记
2019-05-27
linux命令(7)ubuntu的vim命令用法
2019-05-27
使用nginx配置多个php-fastcgi负载均衡
2019-05-27
CURL抓取网页内容并用正则提取。
2019-05-27
Ngin的配置文件nginx.conf完整配置说明(包括fastcgi和负载均衡设置)
2019-05-27
浏览器显示网页的机制
2019-05-27
CSS基础知识
2019-05-27
Nginx+PHP-FPM优化技巧总结
2019-05-27
Ubuntu安装Torque教程
2019-05-27
CentOS下使用tcpdump网络抓包用
2019-05-27
三种配置环境变量的方法--path
2019-05-27
linux下运行java代码
2019-05-27
jps命令显示jvm进程
2019-05-27
纯CSS画的基本图形技巧绘制(矩形、圆形、三角形、多边形、爱心、八卦等)
2019-05-27
Linux init进程详解
2019-05-27