1.阶乘公式:n!=n×(n-1)×(n-2)×...×1
2.实例(使用函数方法)
(1)求n的阶乘
方法一 用for循环计算n!
function getSum(n) {
let s = 1;
for (let j = 1; j <= n; j++) {
s = s * j;
}
return s
}
// n是形参,k是实参,在函数调用时实参传递给形参
let k = 8;
let m = getSum(k);
console.log(m);
方法二 用递归函数计算n!
// 用递归函数计算n!
function sum(n) {
// 1.明确递归结束的条件
if (n == 1) {
// return回溯
return 1
} else {
// 2.继续分解n
return n * sum(n - 1)
// 函数自己调用自己:在调用过程中分解问题
}
}
// 括号里为n的值
let n = sum(5);
console.log(`5!=${n}`);
递归补充注意事项:
1、递归调用:函数自己调用自己(即在函数的函数体语句中调用自己)
2、递归算法:
(1)用递归方式解决问题的前提
a、问题可以进行分解,分解得到的新问题的解法与原问题的解法相同
8! --> 8* 7! --->7 6!-->.......2!-->2 * 1!
b、问题的分解过程必须有明确的结束条件
(2)递归的过程
a、自上而下分解问题:得到最简单的问题的解
b、自下而上回溯得到原问题的解
(2)求1到n的阶乘和
function getSum(n) {
var sum = 0;
for (let i = 1; i <= n; i++) {
let s = 1
for (let j = 1; j <= i; j++) {
s = s * j;
}
sum = sum + s
}
return sum
}
let k = 10
let result = getSum(k)
console.log(result);
其中k的值就可以给为想要的阶乘数的值