JZ10 斐波那契数列
## 描述
大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。
斐波那契数列是一个满足
fib(x)={ 1 x= (1,2) }
fib(x)= fib(x-1)+fib(x-2) {x>2} 的数列
数据范围:1\leq n\leq 391≤n≤39
要求:空间复杂度 O(1),时间复杂度 O(n),本题也有时间复杂度 O(logn)O 的解法
输入描述:
一个正整数n
返回值描述:
输出一个正整数。
比较简单
public static int Fibonacci(int n) {
if (n ==0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return Fibonacci(n-1) + Fibonacci(n-2);
}
}
public static int Fibonacci(int n) {
if (n <= 1) {
return n;
}
int [] dp = new int[n+1];
dp[0] = 0;
dp[1] = 1;
for (int j = 2; j <= n; j++) {
dp[j] = dp[j-1] + dp[j-2];
}
return dp[n];
}
JZ69 跳台阶
## 描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
数据范围:0≤n≤40
要求:时间复杂度:O(n) ,空间复杂度: O(1)
解题思路
f(1) = 1
f(2) = 2 先跳1级再跳1级 || 直接挑2级
if(n > 1)
public static int jumpFloor(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
} else {
return jumpFloor(n-1) + jumpFloor(n-2);
}
}