javascript - 更新帖子:如何获得 JavaScript 阶乘程序的循环来显示使用的工作?查看要求
问题描述
这是我今天的第二篇文章,因为原文不清楚,我被敦促重新发布,因为尽管得到了一些好的答案,但它们不符合代码的要求。我被要求用 JavaScript 编写一个允许用户执行多项任务的程序,其中之一是向用户询问一个数字并计算该数字的阶乘,然后以需求中列出的格式显示它。由于我对 Java 脚本了解不多,因此我使用了已经提出的问题并设法使计算工作,但无法弄清楚如何在仍然满足要求的同时获得所需的输出。
要求: • 只能使用提供的变量 Number(变量初始化为 0 以保存用户输入) Factorial(变量初始化为 1 以保存计算出的阶乘值) Count(变量保存执行循环执行阶乘计算的次数)。这是挑战而不是我设置的限制 • 不能使用花哨的库 • 需要对输出使用循环解决方案。另一篇文章的答案需要引入新变量,也许是我缺乏理解,但也许我自上一篇文章以来获得的写得不好的伪代码可能会有所帮助。• 以以下格式输出:(这是一个警告,因此部分程序正常)
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 + ".");
}
我知道有很多类似的问题,包括我的第一篇文章,当我环顾四周并使用它们来帮助我做到这一点时,它现在成功了,但它正在将输出转换为我正在努力解决的所需格式。我被告知可以使用循环,但不知道从哪里开始实施,我只被允许使用该解决方案。
再次,我想为我的第一篇文章道歉,如果不是挑战提供者设置的令人难以置信的荒谬限制,给定的答案会很好用,他们还负责给我垃圾伪代码,这不是我的去,但我用来考虑循环。
我很感激阅读这篇 amd 提供的解决方案所花费的时间,因此我将返回并尝试在上一篇文章中标记所有工作答案,以解决人们可能会寻找答案的任何正常问题。
解决方案
这有点脏,但它应该满足除 , 和 之外没有其他变量number
被count
使用的条件factorial
。
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
推荐阅读
- ios - 如何解决颤振上的 pod install 错误?
- python - 如何发布我刚刚保存的带有 tweepy 的图片?
- google-cloud-platform - Flink-BigTable - 任何连接器?
- excel - Excel SUMPRODUCT 和动态文本条件
- r - 闪亮 - 带小时的滑块输入
- python - python tkinter“in”运算符不起作用
- javascript - 尝试与 React .js App 同时运行我的 node.js 服务器并得到:'ERR_MODULE_NOT_FOUND'
- java - 使用 for 循环反转二维数组
- javascript - 如何将 mongoDB 中的 _id 字段重命名为不同的键名?
- assembly - 手臂组件中的奇怪STRB