Как разрешить двойную печать в моей факториальной программе 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);
    }
}

enter image description here

Я прикрепил образ моего кода и вывода. Я просто хочу показать, что я вхожу в результат.

Если я введу номер 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