我正在分析以下有關彩票賠率的代碼,我有兩個問題:
為什么我們需要先將 lotteryOdds 的值設定為 1(另外,這是這種型別計算中的常見情況嗎?)
我知道用于計算賠率的公式 (n*(n-1)...(n-k 1)/(1*2...*k),但如果有人向我解釋它是如何根據重復“for”回圈,我很感激。
import java.util.Scanner; public class LotteryOdds { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(" How many numbers do you need to draw? "); int k = in.nextInt(); System.out.println(" what is the highest numbers you can do draw? "); int n = in.nextInt(); int lotteryOdds = 1; for (int i = 1; i <= k; i ) { lotteryOdds = lotteryOdds * (n - i 1) / i; System.out.println("Your odds are 1 in " lotteryOdds " . Good luck!"); } }}
uj5u.com熱心網友回復:
該lotteryOdds變數需要1,因為如果你做0 *的東西,你總是會得到0,所以程式總是回傳0。至于回圈,讓改變價值觀和走線槽回圈:第一次迭代:
彩票賠率 = 1 * (n - 1 1) / 1 = n / 1
第二次迭代:
彩票賠率 = n * ((n - 2 1) / 2) = (n / 1) * ((n - 1) / 2) = n * ((n - 1) / 2) = ((n * (n) - 1)) / (1 * 2)
等等。所以當你概括它時,你會得到: (n * (n - 1)...(n - k 1) / (1 * 2 ... * k) 就像上面的公式一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336107.html
標籤:爪哇 循环 数学 java.util.scanner
