题目一:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39
练习地址
https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3
https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof/
方法1:递归
public class Solution {
public int Fibonacci(int n) {
if (n <= 0) {
return 0;
}
if (n == 1) {
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
复杂度分析
- 时间复杂度:O(nlogn)。
- 空间复杂度:O(nlogn)。
方法2:循环
public class Solution {
public int Fibonacci(int n) {
if (n <= 0) {
return 0;
}
if (n == 1) {
return 1;
}
int last = 0, result = 1;
for (int i = 2; i <= n; i++) {
result += last;
last = result - last;
}
return result;
}
}
复杂度分析
- 时间复杂度:O(n)。
- 空间复杂度:O(1)。
题目二:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
练习地址
https://www.nowcoder.com/practice/8c82a5b80378478f9484d87d1c5f12a4
https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/
参考答案
实际就是斐波那契数列,与上题解法类似。