求阶乘 n*(n-1)*(n-2)...*3*2*1
非递归:
function fun(num) {
if (num === 0 || num === 1) {
return 1
} else if (num > 0) {
return num * fun(num - 1)
}
}
console.log(fun(5))
递归:
function factorial(n, total) {
if (n === 1) return total;
return factorial(n - 1, n * total);
}
factorial(5, 1)
斐波那契数列 1 1 2 3 5 8 13...
非递归:
function fun1(num){
if(num <= 1){
return 1
}else if(num > 1){
return fun1(num - 1) + fun1(num - 2);
}
}
console.log(fun1(5));
递归:
function Fibonacci2(n, ac1 = 1, ac2 = 1) {
if (n <= 1) { return ac2 };
return Fibonacci2(n - 1, ac2, ac1 + ac2);
}