Java嵌套而循环和阶乘初学者



我正在循环时处理嵌套。我从一个初始的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()移到循环之外,这样它就不会在每次迭代时都要求新的输入。

-您需要定义count(int 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。因此,知道这一点,我们根本无法重置i并在循环内fact。如果我们输入 4,在第一次迭代之后,fact将等于 4!,i将等于 5。如果只是不重置它们,在下一次迭代中,我们将简单地将fact(4!( 乘以 5。然后i将变为 6,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。

最新更新