50 lines
1.0 KiB
JavaScript
50 lines
1.0 KiB
JavaScript
// 5!
|
||
// 5 * 4 * 3 * 2 *1
|
||
// 10!
|
||
// 10 * 9 * 8 * 7 * 6 .... * 1
|
||
|
||
// factorial(10) ----> 10!
|
||
// factorial(5) ----> 5!
|
||
|
||
// 委托
|
||
// 5! === 5 * 4! === 4 * 3! === 3 * 2! === 2 * 1! === 1
|
||
|
||
// function factorial(x) {
|
||
// if (x === 1) {
|
||
// return 1;
|
||
// } else {
|
||
// return x * factorial(x - 1);
|
||
// }
|
||
// }
|
||
// console.log(factorial(5));
|
||
|
||
// func(x, y) ----> 从 x 加到 y
|
||
// 1,100 ---> 从 1 加到 100,1 + 2 + 3 + 4 ... + 99 + 100
|
||
// func(1,100) === 100 + func(1,99) === 99 + func(1,98) === func(1,1) === 1
|
||
|
||
// function func(x, y){
|
||
// if(x === y){
|
||
// return x;
|
||
// } else {
|
||
// return y + func(x, y-1);
|
||
// }
|
||
// }
|
||
// console.log(func(1, 100));
|
||
|
||
|
||
// 递归第三个例子:斐波那契数列
|
||
// 0、1、1、2、3、5、8、13、21、34
|
||
|
||
// func(5) ----> 第 5 位所对应的斐波那契数 func(4) + func(3)
|
||
|
||
function func(x) {
|
||
if (x === 1) {
|
||
return 0;
|
||
} else if (x === 2) {
|
||
return 1;
|
||
} else {
|
||
return func(x - 1) + func(x - 2);
|
||
}
|
||
}
|
||
console.log(func(7));
|