题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
一开始做的时候,查阅发现有好多人说这与斐波那契数列规律相似,推导出f(n) = f(n-1) + f(n-2).这个规律.
但是发现不然,应该是为2^(n-1)次方.
n=1:1 --------------------------------------------------1种;
n=2:11,2 ----------------------------------------------2种;
n=3:111,12,21,3-------------------------------------4种;
n=4:1111,13,31,121,211,112,22,4--------------8种;
private static int jump(int target) {
//return target <= 0 ? 0 : 1 << (target - 1);
return (int)Math.pow(2,target-1);
}
有两种语句方式,一种使用Math,直接返回,但是少了小于0的情况.
或者使用三元运算,当小于0时,返回0 ,这样思考的就比较全面.