题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
递归:
分析:
*当有n个台阶时,假设有f(n)种走法。
*青蛙最后一步跨1个台阶或者跨2个台阶。
*当最后一步跨1个台阶时即之前有n-1个台阶,n-1个台阶有f(n-1)种走法;当最后一步跨2个台阶时即之前有n-2个台阶,n-2个台阶有f(n-2 )种走法。
*n个台阶的走法等于前两种情况的走法之和,即f(n)=f(n-1)+f(n-2)。
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number<=2:
return number
else:
return self.jumpFloor(number-1)+self.jumpFloor(number-2)
public class Solution {
public int JumpFloor(int target) {
if (target<=2)
return target;
else
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
非递归:
# -*- coding:utf-8 -*-
class Solution:
def jumpFloor(self, number):
# write code here
if number<=2:
return number
nums=[0 for i in range(number+1)]
nums[0],nums[1],nums[2]=0,1,2
for i in range(3,number+1):
nums[i]=nums[i-1]+nums[i-2]
return nums[number]
public class Solution {
public int JumpFloor(int target) {
if (target<=2)
return target;
int num[]=new int[target+1];
num[0]=0;
num[1]=1;
num[2]=2;
for(int i=3;i<=target;i++)
num[i]=num[i-1]+num[i-2];
return num[target];
}
}