Цикл for- произведение чисел от a до b

#java

#java

Вопрос:

Мне нужно написать программу, которая выводит произведение всех целых чисел от a до b (a < b).

Включите a и исключите b из продукта.

Пример ввода 1:

1 2

Пример вывода 1:

1

Вывод вашего кода:

2

Вот мой код:

 import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long multiply = 0;

        for(long i = a; i<b; i  ){
            multiply = i * (i 1);
        }
            System.out.println(multiply);
    }
}
  

Что я делаю не так? Пожалуйста, подсказка 🙂

Обновить:

Это тоже не помогло.

Тестовый ввод:

1 2

Правильный вывод:

1

Вывод вашего кода:

0

 import java.util.Scanner;
class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long multiply = 0;
        for(long i = a 1; i<b; i  ){
            multiply = i * (i 1);
            if(multiply==2){
                --multiply;
            }

        }
            System.out.println(multiply);
    }
}
  

Ответ №1:

Вы должны начать с multiply = 1 , а затем продолжать умножать его на следующие целые числа.

 import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long a = scanner.nextLong();
        long b = scanner.nextLong();
        long multiply = 1;

        for (long i = a; i < b; i  ) {
            multiply *= i;
        }
        System.out.println(multiply);
    }
}
  

Пример запуска:

 1 2
1
  

Еще один пример запуска:

 2 5
24
  

Ответ №2:

Давайте попробуем выработать решение перед написанием кода и поймем, что такое «произведение всех целых чисел от a до b (a < b)»

Для a = 1 и b = 2, поскольку мы включаем 1 и исключаем 2, результат равен 1 Аналогично, для a = 1 и b = 3 результат равен 1 * 2

Итак, ваша первая реализация на самом деле близка: вы хотели бы перебрать все числа, включенные в результат, и накопить это число путем умножения. Вы бы не хотели только multiply = i * (i 1); потому, что это заменит значение multiply в каждой итерации цикла, вместо этого вы должны использовать предыдущее значение multiply и объединить его с i