簡體   English   中英

如果用戶輸入“ y”並且階乘部分也正常運行,則獲取帶有while循環的Java階乘程序以保持重復

[英]Getting a Java factorial program with a while loop to keep repeating if the user enters with “y” and has the factorial part working as well

我是編程新手,我試圖弄清楚如何使Java程序正確運行階乘並詢問用戶是否要繼續並輸入另一個數字以使用該階乘並顯示該階乘。 當用戶輸入“ y”時,程序應詢問另一個數字。 如果他們選擇“ n”,則程序應終止。 我已經花了一天的時間來編寫此代碼,但仍然沒有弄清楚我在代碼中出了什么問題,以使其在循環時能正確解決階乘。 有人可以幫幫我嗎?

  int i = 0; int factorial = 1; int input; char ind = 'y'; while (ind == 'y') { System.out.println("Please enter in a number to determine it's factorial: "); input = scan.nextInt(); scan.nextLine(); if ( i<= input) { i=input; i++; factorial = factorial * i; System.out.println(" the factorial of: " + input + " is " + factorial); }System.out.println(" Do you want to continue? (y/n) :"); ind = scan.nextLine().charAt(0); } System.out.println("goodbye."); } } 

好吧,首先,您需要知道什么是階乘。

n! = n *(n-1)!

了解這一點很重要。 5階乘是4階乘的5倍。這實際上很酷,而且非常有用。 因此,您可以編寫執行此操作的函數。

long factorial(long n) {
    if (n == 1) {
        return 1;
    }
    return n * factorial(n-1);
}

因此,您要做的是定義與上述類似的方法。 然后在要求他們輸入數字的循環中,調用此方法。 它會根據需要自行調用以進行計算。

還有其他方法。 您可以進行for循環。

long result = 0;
for (long val = 2; val <= n; ++val) {
    result = result * val;
}

但是遞歸方法有點酷。

暫無
暫無

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

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