Помогите решить задачу "Произведение"

Aleks404

Новичок
Пользователь
Фев 21, 2022
7
0
1
Доброго времени суток. Снова нужна Ваша помощь, помогите разобраться что я делаю не так? вообще запутался в какую сторону двигаться



Задача : На вход подается целое число. Вам необходимо вывести произведение всех чисел от 1 до данного числа (включительно).

Например, на вход подается число 5, вам нужно найти - 1*2*3*4*5 = 120


Решение:

package main

import "fmt"

func main() {
var x int
fmt.Scanln(&x)

for i := 1; i <= x; i++{x *= i}

fmt.Println(x)
}
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
вообще запутался в какую сторону двигаться
В вашем коде проблема в том, что для хранения результата используется та же переменная x что и для условия цикла поэтому цикл завершается только после переполнения переменной x, так как значение x становится отрицательным и следовательно меньше чем i.
Чтобы исправить можно использовать другую переменную для подсчета и вывода результата:
C-подобный:
package main

import "fmt"

func main() {
    var x int
    fmt.Scanln(&x)

    y := 1   
    for i := 1; i <= x; i++ {
        y *= i
    }

    fmt.Println(y)
}
 

Aleks404

Новичок
Пользователь
Фев 21, 2022
7
0
1
В вашем коде проблема в том, что для хранения результата используется та же переменная x что и для условия цикла поэтому цикл завершается только после переполнения переменной x, так как значение x становится отрицательным и следовательно меньше чем i.
Чтобы исправить можно использовать другую переменную для подсчета и вывода результата:
C-подобный:
package main

import "fmt"

func main() {
    var x int
    fmt.Scanln(&x)

    y := 1  
    for i := 1; i <= x; i++ {
        y *= i
    }

    fmt.Println(y)
}
Спасибо! А y:=1 потому что при умножении на 0 у нас любое число будет равно 0?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Спасибо! А y:=1 потому что при умножении на 0 у нас любое число будет равно 0?
Да
 

Форум IT Специалистов