为了账号安全,请及时绑定邮箱和手机立即绑定

更新后的帖子:如何获得 JavaScript 阶乘程序的循环来显示所使用的工作?查看要求

更新后的帖子:如何获得 JavaScript 阶乘程序的循环来显示所使用的工作?查看要求

喵喵时光机 2023-08-18 14:09:20
我面临的挑战是用 JavaScript 编写一个程序,允许用户执行多项任务,其中之一是要求用户提供一个数字并计算该数字的阶乘,然后以需求中列出的格式显示它。由于我对 Java 脚本了解不多,所以我使用了已经提出的问题并设法使计算正常工作,但无法弄清楚如何在仍满足要求的情况下获得所需的输出。要求: &bull; 只能使用提供的变量 Number(初始化为 0 的变量,用于保存用户输入) Factorial(初始化为 1 的变量,用于保存计算的阶乘值) Count(用于保存执行阶乘计算的循环次数的变量)。这是挑战设置的限制,而不是我的限制。 &bull; 无法使用精美的库。 &bull; 需要对输出使用循环解决方案。另一篇文章的答案需要引入新的变量,也许是我缺乏理解,但也许自上一篇文章以来我获得的写得不好的伪代码可能会有所帮助。&bull; 以以下格式输出:(这是一个警报,因此程序的一部分没问题)The factorial of 5 is 5*4*3*2*1=120 OR5! is  5*4*3*2*1=120 伪代码写得不好:代码://prompts the user for a positive numbervar number = parseInt(prompt("Please enter a positive number"));console.log(number);//checks the number to see if it is a stringif (isNaN(number)){  alert("Invalid. Please Enter valid NUMBER")}//checks the number to see if it is negaiveelse 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 enteredelse {    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 + ".");}
查看完整描述

1 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

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


查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信