Как разрешить двойную печать в моей факториальной программе Java?
0 AikaAlec [2016-03-18 05:13:00]
import java.util.*;
public class Factorial {
public static void main(String[] args) {
int num;
Scanner sc = new Scanner(System.in);
System.out.print("Enter a number: ");
num = sc.nextInt();
int n = num;
int result = 1;
while (num != 1) {
result = result * num;
num--;
System.out.println(result);
}
System.out.println("The factorial of " + n + " is " + result);
}
}
Я прикрепил образ моего кода и вывода. Я просто хочу показать, что я вхожу в результат.
Если я введу номер 5, выход должен быть;
Enter No: 5 >20 60 120 The factorial of 5 is 120
java
1 ответ
0 Решение Elliott Frisch [2016-03-18 05:18:00]
Измените начальное значение result
(и ваше условие цикла). Что-то вроде,
int n = num;
int result = num;
while (--num != 1) {
result *= num;
System.out.println(result);
}
System.out.printf("The factorial of %d is %d%n", n, result);
объяснение
Когда вы вызываете result = result*num;
с начальным result
1
вы получаете свой нежелательный результат 5
(потому что 1
* 5
равно 5
). Если вы начинаете с 5
и уменьшаетесь в тесте цикла, вы получите 5 * 4
.
Вывод
Enter a number: 5
20
60
120
The factorial of 5 is 120