首页 > 解决方案 > 在计算数字的阶乘时,我如何写出每个单独的数字以及星号?

问题描述

我遇到了一个问题,需要我显示阶乘函数的完整工作原理,例如,如果用户想锻炼 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);

对此的任何帮助将不胜感激!

标签: javascripthtmlfactorization

解决方案


一种选择是,在每次迭代时,推送到通过递归调用(或在初始调用中创建)传递的数组。最后,返回由 连接的数组,*以及数组的总和:

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>


推荐阅读