我正在循环时处理嵌套。我从一个初始的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。
-在循环结束时递增count
和number
:
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。