說明:編寫一個讓用戶輸入N並輸出N的程序! (表示N *(N-1)(N-2) ... * 2 * 1)。提示:初始化變量totalValue爲N,並使用從N-1到1的循環變量i。5!是120,但輸出讀數爲1!是120?
從我對Java因子的理解中,5! = 5 * 4 * 3 * 2 * 1 = 120 因此,當我在本練習中計算Java因子時,我輸入5作爲用戶輸入以測試我是否能夠正確計算Java因子。但是輸出結果爲1!是120.這是我的代碼的一部分,只是窺見一斑:
userInt = scnr.nextInt();
// FIXME: Ask user to input an integer, store in userInt
totalVal = userInt;
while (userInt > 1) {
userInt = userInt - 1;
totalVal = userInt * totalVal;
} // FIXME: Add while loop that counts down to 1, updating totalVal
System.out.println(userInt + "! is " + totalVal);
} //After typing 5 and clicking Run, it shows 1! is 120
從我的註釋// FIXME的理解:要求用戶輸入一個整數,存放於userInt //,我輸入了「 5'作爲試圖計算階乘的測試。因此,在輸入5作爲用戶輸入時,爲什麼沒有達到5!是120?爲什麼不是5!是120?
是否可以從我的代碼解釋爲什麼它是1!是120而不是5!是120?或者爲什麼它應該是5!是120,因爲我一直假設它是? 預先感謝您,我正試圖圍繞這一點來解決我的問題。
因爲你遞減'userInt'直到它達到1.什麼讓你感到困惑? – shmosel
遞減時,糾正我,如果我錯了,也就是說,我=我-1?所以這就是說在我的代碼中它是1!因爲userInt = userInt - 1是120?現在爲什麼它是1是有道理的!是120.我一開始感到困惑,因爲我認爲5! = 5 * 4 * 3 * 2 * 1 = 120,我假設輸出應該顯示爲5!是120 – acruz30
完全正確。 – shmosel