JZ71青蛙跳台阶扩展问题(斐波那契数列问题)
《剑指offer》面试题10(关于青蛙跳台阶之斐波那契数列)扩展问题:
我们知道,当青蛙一次只能跳一阶或者两阶的时候,我们可以把问题转换为斐波那契数列用递归或者非递归的形式予以计算,但是,若青蛙一次能跳的阶数在n阶以内(包括n阶)时,又该如何计算呢?
题目:
在青蛙跳台阶的问题中,如果把条件改成:一只青蛙一次可以跳上1级台阶,也可以跳上2级…也可以跳上n级,此时该青蛙跳上一个n级的台阶总共有多少种跳法?
思路:
如果青蛙选择第一次跳1阶,那么接下来最多只能跳n-1阶,也就最多能有n-1种跳法,如果青蛙选择第一次跳2阶,那么接下来最多只能跳n-2阶,也就最多能有n-2种跳法,…,依次类推如果青蛙选择第一次跳n-1阶,那么接下来最多只能跳1阶,也就最多能有1种跳法,所以,设该青蛙跳上一个n级的台阶总共有f(n)种跳法,则f(n)= f(n-1)+ f(n-2)+ f(n-3)+ … + f(1)。而f(n-1)= f(n-2)+ f(n-3)+ f(n-4)+…+ f(1)。两式相减得f(n)= 2 * f(n-1)= 2 * 2 * f(n-2)=2 * 2 * 2 * f(n-3)=…=2^(n-1) * f(n-(n-1)) = 2^(n-1) * f(1)= 2^(n-1),代码如下:
Java解题:
/** * 青蛙能跳n阶以内 * @param args */ public int Fibonacci2(int n){ if(n==0) return 0; /*if(n==1) return 1;*/ //2*Fibornacci2(n-1) return (int) Math.pow(2,n-1); }
Python解题:
class Solution: def jumpFloorII(self , number: int) -> int: return 2**(number-1)
声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/
如出现转载未声明 将追究法律责任~谢谢合作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-03-05 python报错“IndentationError: unexpected indent“的两三解决方法
2019-03-05 【TCP协议】MTU和MSS详解
2019-03-05 【AppScan】入门工作原理详解