已更新 post:如何获得 JavaScript 阶乘程序的循环以显示所使用的工作?查看要求

Updated post: How do I get a JavaScript factorial programs' loop to show the working used? See requirements

这是我今天的第二个 post,因为 original 不清楚,我被敦促重新 post 因为尽管得到了一些很好的答案,但他们不符合要求代码。我被挑战用 JavaScript 编写一个程序,允许用户执行多项任务,其中一项是向用户询问一个数字并计算该数字的阶乘,然后以列出的格式显示它在要求中。由于我对 Java 脚本知之甚少,所以我使用了已经提出的问题并设法使计算正常工作,但无法弄清楚如何在满足要求的同时获得所需的输出。

要求: • 只能使用提供的变量 Number(变量初始化为 0 以保存用户输入) Factorial(变量初始化为 1 以保存计算阶乘的值) Count(变量以保存循环执行阶乘计算的次数)。这是挑战而不是我设定的限制 • 不能使用花哨的库 • 需要对输出使用循环解决方案。另一个 post 的答案需要引入新的变量,也许是我缺乏理解,但也许我自上次 post 以来获得的写得不好的伪代码可能会有所帮助。 • 以格式输出:(这是一个警告,所以部分程序是好的)

The factorial of 5 is 5*4*3*2*1=120 
OR
5! is  5*4*3*2*1=120 

伪代码写得不好:

代码:

//prompts the user for a positive number
var number = parseInt(prompt("Please enter a positive number"));
console.log(number);
//checks the number to see if it is a string
if (isNaN(number))
{
  alert("Invalid. Please Enter valid NUMBER")
}

//checks the number to see if it is negaive
else if (number < 0) 
{
  alert("Please Enter valid positive number");
}

//if a positive integer is entered a loop is started to calculate the factorial of the number the user entered
else {
    let factorial = 1;
    for (count = 1; count <= number; count++) {
        factorial *= count;
         }
    
    //Sends the inital number back to the user and tells them the factorial of that number
    alert("The factorial of " + number + " is " + factorial + ".");
}




我知道有很多类似的问题,包括我的第一个 post,这个问题现在成功了,因为我环顾四周并使用它们来帮助我走到这一步,但它正在将输出转换为所需的格式我正在挣扎。有人告诉我循环是可能的,但不知道从哪里开始实施,我只被允许使用该解决方案。

再次,我想为我的第一个 post 道歉,如果不是因为挑战提供者设置的令人难以置信的荒谬限制,给出的答案会很有效,他还负责给我垃圾伪代码,这不是我想要的,但我正在考虑循环。

感谢您花时间阅读本文并提供解决方案,因此我会返回并尝试在最后 post 中标记所有有效答案,以解决人们可能会搜索答案的任何正常问题。

这有点肮脏,但它应该满足不使用除 numbercountfactorial 之外的其他变量的条件。

let number = 5;
let factorial = 120; 
// ^ Do your own calculation for this

alert(`The factorial of ${number} is ${Array.from(Array(number + 1).keys()).slice(1).reverse().join("*")}=${factorial}`)

那么这是怎么回事? 我们使用内插模板字符串来生成所需的输出,${these things} 中的表达式被评估为字符串。我们放在那里的是什么烂摊子?

Array.from(Array(number + 1).keys())

上面的表达式创建数组 [0,1,2,3,4,5].

.slice(1) 给我们 [1,2,3,4,5]

.reverse() 给我们 [5,4,3,2,1]

join("*") 给我们 "5*4*3*2*1"

将所有内容放在一起可以得到 The factorial of 5 is 5*4*3*2*1=120

瞧!输出以所需格式打印,没有引入任何新变量。

编辑:哦,您不需要为此使用内插字符串。您也可以像在问题中所做的那样将常规字符串连接在一起。例如

 "The factorial of " + factorial + " is " + Array.from(Array(number + 1).keys()).slice(1).reverse().join("*") + "=" + factorial