一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度。
2015-09-15 15:19
429 查看
这是华哥那天问我的,当时不想动脑。回来后,网上看了一下,原理很简单,用到了递归。但我递归很菜。。。
他的思路是:
我们把n 级台阶时的跳法看成是n 的函数,记为f(n)。当n>2 时,第一次跳的时候就有两种不同的选择:一是第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2 级,此时跳法数目等于后面剩下的n-2 级台阶的跳法数目,即为f(n-2)。
因此n 级台阶时的不同跳法的总数f(n) = f(n-1) + f(n-2)。
下面是java代码:
public class digui {
public static int digui(int x)
{
if(x==1) return 1;
else
if(x==2) return 2;
else
return digui(x-1)+(x-2);
//return x;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println(digui(1000));
}
}
//498503
他的思路是:
我们把n 级台阶时的跳法看成是n 的函数,记为f(n)。当n>2 时,第一次跳的时候就有两种不同的选择:一是第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳2 级,此时跳法数目等于后面剩下的n-2 级台阶的跳法数目,即为f(n-2)。
因此n 级台阶时的不同跳法的总数f(n) = f(n-1) + f(n-2)。
下面是java代码:
public class digui {
public static int digui(int x)
{
if(x==1) return 1;
else
if(x==2) return 2;
else
return digui(x-1)+(x-2);
//return x;
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println(digui(1000));
}
}
//498503
相关文章推荐
- 如何建立一个账套
- latex:数学式中的省略符号
- iOS & Mac JSON To Model
- 模式识别(1)
- CentOS-7.0.中安装与配置Tomcat-7的方法
- C# 委托及各种写法
- APP测试体系
- MongoDB性能篇 -创建索引,组合索引,唯一索引,删除索引和explain执行计划
- hibernate自增主键
- 剑指 offer:跳台阶
- JAVA设计模式之单例模式
- 25年前,开发者如何将游戏塞进内存?
- Error:Execution failed for task ':app:dexDebug'.
- 自绘控件的4种方法
- 图标收集
- 软件工程的实践项目的自我目标
- [转载] 基于Redis实现分布式消息队列
- Code First Migrations更新数据库结构的具体步骤
- maven项目将自定义文件添加到META-INF中
- Ionic框架学习笔记(1)