剑指offer上的题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
首先很明显这是一个斐波那契数列的问题,但是我觉得这是一个变种比较大的斐波那契数列原因如下
而并不是如书中所描述的一样
当阶梯为1时只有一种方法 当阶梯为2时有两种方法
故代码应该如下
public int JumpFloor(int target) { if (target <= 0) { return -1; } else if (target == 1) { return 2; } else if (target ==2) { return 3; } else { return 2*JumpFloor(target-1)+JumpFloor(target-2); } }
而不是
public int JumpFloor(int target) { if (target <= 0) { return -1; } else if (target == 1) { return 1; } else if (target ==2) { return 2; } else { return JumpFloor(target-1)+JumpFloor(target-2); } }