其实和青蛙跳台阶类似的思想。
n = 0, 0-> f(0)
n = 1, (1)-> f(1)
n = 2, (2, 1+1) ->f(0)+f(1)
n = 3, (3, 2+1, 1+2)-> f(0)+f(1)+f(2)
n = 4, (4, 3+1, 2+2, 1+3)-> f(0)+f(1)+f(2)+f(3)
n = n, (n,n-1+1, n-2+2, ... 1+n-1)-> f(0)+f(1)+f(2)+...+f(n-1)
f(n) = f(0)+f(1)+f(2)+...+f(n-1) = f(n-1)+f(n-1)=2*f(n-1);
所以可以得出规律是等比数列,首项是1且q = 2。
可以写出如下代码:
int JumpFloor(int number) { if (0 >= number) return 0; return 1<<(--number); }