您的位置:首页 > 其它

一个台阶总共有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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: