javascript - 在计算数字的阶乘时,我如何写出每个单独的数字以及星号?
问题描述
我遇到了一个问题,需要我显示阶乘函数的完整工作原理,例如,如果用户想锻炼 6!,我需要显示:6 * 5 * 4 * 3 * 2 * 1 = 720. 我需要为此使用数组吗?
这是我到目前为止为了锻炼任何用户给定数字的分解值,尽管这仅输出最终值,而不是像我上面显示的那样完全扩展的计算:
(变量号包含用户输入);
var f = [];
function factorizeFunction(number) { //this is the function that does the factorization calculations
if (number == 0 || number == 1)
return 1;
if (f[number] > 0)
return f[number];
return f[number] = factorizeFunction(number-1) * number;
}
document.getElementById("factorialTest").innerHTML = factorizeFunction(number);
对此的任何帮助将不胜感激!
解决方案
一种选择是,在每次迭代时,推送到通过递归调用(或在初始调用中创建)传递的数组。最后,返回由 连接的数组,*
以及数组的总和:
function factorizeFunction(number, arr = []) { //this is the function that does the factorization calculations
if (number == 0 || number == 1) arr.push(number);
else {
arr.push(number);
factorizeFunction(number - 1, arr);
}
return arr.join(' * ') + ' = ' + arr.reduce((a, b) => a * b, 1);
}
document.getElementById("factorialTest").innerHTML = factorizeFunction(5);
<div id="factorialTest"></div>
推荐阅读
- visual-c++ - VC++ 2017:尝试使用 RC 编译 .rc 文件时出错
- mysql - 使用resultmap时如何计算?
- jmeter - 如何在现有的 Jmeter 脚本中设置 CBLite
- reactjs - 当状态中只有一个字段发生变化时,如何避免重新渲染所有 React 纯组件?
- phpexcel - 如何在 PHPExcel 中获取特定行的列数?
- python - 两列唯一字符串
- javascript - 带有 vue-router 的谷歌收件箱式导航
- python - 为什么在 Keras 中使用多处理时推理时间会变慢?
- navision - 试图在 xml 中的特定元素名称中查找和存储特定数据?
- python - 我有一个元素列表,我想删除特定的重复元素并将其附加到 Python 3.7.2 中现有列表的开头