我将如何显示方法和答案?
例如,用户输入 = 5,
那么代码输出是"5 * 4 * 3 * 2 * 1 = 120"?
function factorial(n)
{
var result = n;
for (var i = 1; i < n; i ++)
{
result = i * result;
}
alert("The answer is " + result);
}
任何帮助都非常感谢
这是使用可选参数和默认值执行此操作的另一种方法
- 阶乘函数的基数情况是
n = 0
和n = 1
其中factorial (n) = 1
- 在所有其他情况下,
n * factorial (n - 1)
我们添加第二个参数acc
,用作阶乘最终值的累加器。这允许我们同时构建字符串结果并使用递归计算阶乘的数值答案。
const factorial = (n, acc = 1) =>
n < 2
? '1 = ' + acc
: String (n) + ' * ' + factorial (n - 1, acc * n)
console.log (factorial (0))
// 1 = 1
console.log (factorial (1))
// 1 = 1
console.log (factorial (5))
// 5 * 4 * 3 * 2 * 1 = 120
console.log (factorial (9))
// 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362880
以及使用 ES6 字符串模板的相同函数
const factorial = (n, acc = 1) =>
n < 2
? `1 = ${acc}`
: `${n} * ${factorial (n - 1, acc * n)}`
console.log (factorial (0))
// 1 = 1
console.log (factorial (1))
// 1 = 1
console.log (factorial (5))
// 5 * 4 * 3 * 2 * 1 = 120
console.log (factorial (9))
// 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = 362880
您要实现的输出是字符串而不是整数解决方案。因此,您应该包含用于在函数中构建此字符串的逻辑。
您计算阶乘也不正确。
像这样的东西给出了所需的输出:
function factorial(n)
{
var result = 1;
var output_string = "";
for (var i = n; i > 0; i --)
{
result *= i;
if(i!=1) {
output_string += i + " * ";
} else {
output_string += i;
}
}
output_string += " = " + result;
alert(output_string);
}
https://jsfiddle.net/rwpwb3yf/