题目:一个变态一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该变态跳上一个n级的台阶总共有多少种跳法。
分析:每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一
个台阶必须跳。所以共用2^(n-1)种情况。
最快代码:
return 1<<--number;
(代码出处:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 HXY)
利用了移位运算符:<<(变成二进制并且向左移位,空出的填0),相当于乘以2.
同理的还有>>(向右移位,空出的填符号位,即负数填1正数填0),相当于除以2.
当然,这是先计算出结果后写的代码,若直接用代码解决可以考虑动态规划和循环(代码略)。