题目
题目链接:
https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
思路
递归的思想,当台阶为一阶时有一种跳法,当台阶为二阶有两种跳法,当台阶为n阶时,
可以从最后一步来考虑,如果最后一步跳一阶,前面有f(n−1)种跳法,
如果最后一步跳两阶的话,前面有f(n−2)种跳法.
f(0)=1 (0阶台阶有1种跳法,0阶乘=1)
f(1)=1
f(2)=2
f(n)=f(n−1)+f(n−2)
参考答案C++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number int整型
* @return int整型
*/
int jumpFloor(int number) {
/*
递归的思想,当台阶为一阶时有一种跳法,当台阶为二阶有两种跳法,当台阶为n阶时,
可以从最后一步来考虑,如果最后一步跳一阶,前面有f(n−1)种跳法,
如果最后一步跳两阶的话,前面有f(n−2)种跳法.
f(0)=1 (0阶台阶有1种跳法,0阶乘=1)
f(1)=1
f(2)=2
f(n)=f(n−1)+f(n−2)
*/
if (number < 2) return 1;
vector<int> dp(number + 1);
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= number; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[number];
}
};
参考答案Java
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number int整型
* @return int整型
*/
public int jumpFloor (int number) {
/*
递归的思想,当台阶为一阶时有一种跳法,当台阶为二阶有两种跳法,当台阶为n阶时,
可以从最后一步来考虑,如果最后一步跳一阶,前面有f(n−1)种跳法,
如果最后一步跳两阶的话,前面有f(n−2)种跳法.
f(0)=1 (0阶台阶有1种跳法,0阶乘=1)
f(1)=1
f(2)=2
f(n)=f(n−1)+f(n−2)
*/
if (number < 2) return 1;
int[] dp = new int[number];
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i < number ; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
return dp[number - 1] + dp[number - 2];
}
}
参考答案Go
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number int整型
* @return int整型
*/
func jumpFloor(number int) int {
/*
递归的思想,当台阶为一阶时有一种跳法,当台阶为二阶有两种跳法,当台阶为n阶时,
可以从最后一步来考虑,如果最后一步跳一阶,前面有f(n−1)种跳法,
如果最后一步跳两阶的话,前面有f(n−2)种跳法.
f(0)=1 (0阶台阶有1种跳法,0阶乘=1)
f(1)=1
f(2)=2
f(n)=f(n−1)+f(n−2)
*/
if number < 2 {
return 1
}
dp := make([]int, number+1)
dp[0] = 1
dp[1] = 1
for i := 2; i <= number; i++ {
dp[i] = dp[i-2] + dp[i-1]
}
return dp[number]
}
参考答案PHP
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param number int整型
* @return int整型
*/
function jumpFloor( $number )
{
/*
递归的思想,当台阶为一阶时有一种跳法,当台阶为二阶有两种跳法,当台阶为n阶时,
可以从最后一步来考虑,如果最后一步跳一阶,前面有f(n−1)种跳法,
如果最后一步跳两阶的话,前面有f(n−2)种跳法.
f(0)=1 (0阶台阶有1种跳法,0阶乘=1)
f(1)=1
f(2)=2
f(n)=f(n−1)+f(n−2)
*/
if($number <2) return 1;
$dp =[];
$dp[0] =1;
$dp[1] =1;
for($i=2;$i<=$number;$i++){
$dp[$i]= $dp[$i-2]+$dp[$i-1];
}
return $dp[$number];
}