簡體   English   中英

Java嵌套While循環和階乘初學者

[英]Java Nested While Loops and Factorials Beginner

我正在嵌套while循環。 我從一個初始的while循環開始,該循環打印出給定數字的階乘。 下面的代碼。 我現在嘗試添加第二個循環,該循環將包含10個數字(即,如果輸入數字4,它將打印出從4到14的階乘)。 我知道循環應該從我已經擁有的循環開始,但是我真的不知道從那里開始。 我插入了我認為是第一個循環的開始的內容。 我是編碼新手,因此不勝感激

現有代碼:

import java.util.Scanner;

public class MyClass 
{
    public static void main(String args[]) 
    {
        Scanner myScanner = new Scanner(System.in)

        while (count <10)
        {
            int number = myScanner.nextInt();
            int fact = 1;
            int i = 1;

            while(i<=number)
            {
                fact = fact * i;
                i++;
            }
            System.out.println("Factorial of "+number+" is: "+fact);
        }
   `}
}

-您需要將number = myScanner.nextInt()循環,以免每次迭代都要求新的輸入。

-您需要定義countint count = 0 ;)

-循環直到count <= 10。

-循環末尾的增量countnumber

Scanner myScanner = new Scanner(System.in);
int count = 0;
int number = myScanner.nextInt();
while (count <=10) {

     int fact = 1;
     int i = 1;

     while(i<=number) {         
         fact = fact * i;
         i++;
     }
     System.out.println("Factorial of "+number+" is: "+fact);
     number++;
     count++;
}

輸出:(輸入4)

Factorial of 4 is: 24
Factorial of 5 is: 120
Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 is: 40320
Factorial of 9 is: 362880
Factorial of 10 is: 3628800
Factorial of 11 is: 39916800
Factorial of 12 is: 479001600
Factorial of 13 is: 1932053504
Factorial of 14 is: 1278945280

但是,我們可以對此進行很多優化。 5! 等於4! * 5.因此,知道了這一點,我們就無法在循環內重置ifact 如果我們輸入4,則在第一次迭代后, fact將等於4 !,而i將等於5。如果根本不重置它們,則在下一次迭代中,我們將fact (4!)乘以5。然后i將變成六歲, while循環將終止。 然后這將繼續,直到外部while循環終止。

int fact = 1;
int i = 1;
while (count <=10) {       
     while(i<=number) {            
         fact = fact * i;
         i++;
     }
     System.out.println("Factorial of "+number+" is: "+fact);
     number++;
     count++;
}

輸入4可以將內部while循環中的迭代次數從99減少到14。

暫無
暫無

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

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