functionfib(n: number): number {
if (n <= 1) return n
returnfib(n - 1) + fib(n - 2)
}
java实现
classSolution {
// TODO: for循环实现publicintfib(int N) {
if (N <= 1) return N;
intfirst=0;
intsecond=1;
for (inti=0; i < N - 1; i++) {
intsum= first + second;
first = second;
second = sum;
}
return second;
}
// // TODO: 递归实现O(2^n)// public int fib1(int n) {// if (n <= 1) return n;// return fib1(n - 1) + fib1(n - 2);// }// // TODO: 首尾实现// public int fib3(int n) {// if (n <= 1) return n;// int first = 0;// int second = 1;// while (n-- > 1) {// second += first;// first = second - first;// }// return second;// }
}
C++实现
// 递归:O(2^n)publicstaticintfib1(int n) {
if (n <= 1) return n;
return fib1(n - 1) + fib1(n - 2);
}
// for循环:O(n)publicstaticintfib2(int n) {
if (n <= 1) return n;
intfirst=0;
intsecond=1;
for (inti=0; i < n - 1; i++) {
intsum= first + second;
first = second;
second = sum;
}
return second;
}
// 首尾法publicstaticintfib3(int n) {
if (n <= 1) return n;
intfirst=0;
intsecond=1;
while (n-- > 1) {
second += first;
first = second - first;
}
return second;
}
// 特征方程解法:O(1)publicstaticintfib4(int n) {
doublec= Math.sqrt(5);
return (int) (Math.pow((1+c) / 2, n) - Math.pow((1-c) / 2, c));
}
树下留言
LET’S TALK文字是一次相遇。很高兴听到你的声音。