8 斐波那锲函数
// 递归
public class Solution {
public Integer Fibnaco(Interger n) {
return n <= 0 ? 0 : Fibnaco(n-2) + Fibnaco(n-1);
}
}
// 自底向上
public class Solution {
public Integer Fibnaco(Interger n) {
if (n == 0) return 0;
if (n == 1) return 1;
int res = 0, fib1 = 0, fib2 = 1;
for (int i = 2; i <= n; i++) {
res = fib1 + fib2;
fib1 = fib2;
fib2 = res;
}
return res;
}
}
9.变态跳台阶
变态跳台阶可以用f(n) = 2f(n-1)简化求解,其实就是求2^n了
public class Soultion {
public int jumpStagePlus(int n) {
if (n == 0 || n == 1) {
return 1;
}
int a = 1, b = 0;
for (int i = 2; i <= n; i++) {
b = a << 1;
a = b;
}
return a;
}
}
或者也可以是两层for循环暴力求解
public class Solution {
public int JumpFloorII(int target) {
if (target == 0 || target == 1) return 1;
int[] vect = new int[target+1];
vect[0] = vect[1] = 1;
for (int i = 2; i <= target; i++) {
for (int j = 0; j < i; j++) {
vect[i] += vect[j];
}
}
return vect[target];
}
}