簡體   English   中英

更新帖子:如何獲得 JavaScript 階乘程序的循環以顯示使用的工作? 查看要求

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

這是我今天的第二篇文章,因為原文不清楚,我被敦促重新發布,因為盡管得到了一些很好的答案,但它們不符合代碼的要求。 我一直面臨着用 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 + ".");
}




我知道有很多類似的問題,包括我的第一篇文章,當我環顧四周並使用它們來幫助我做到這一點時,該文章現在成功了,但它正在將輸出轉換為我正在努力解決的所需格式。 我被告知可以使用循環,但不知道從哪里開始實施,我只能使用該解決方案。

再次,我想為我的第一篇文章道歉,如果不是挑戰提供者設置的令人難以置信的荒謬限制,給出的答案會很好用,他也負責給我垃圾偽代碼,這不是我的意思繼續前進,但我正在考慮循環。

我很感激閱讀這篇文章所花費的時間並提供解決方案,所以我會回去嘗試在最后一篇文章中標記所有有效的答案,以解決人們可能會尋找答案的任何正常問題。

這有點臟,但它應該滿足不使用除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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM