Факториал в циклах


#1

Нужно найти факториал 5! с помощью for in, while, repeat while


#2

В чем проблема? Не знаете как находится факториал? 5! = 5*4*3*2*1


#3

это я знаю. как реализовать через циклы не знаю


#4
var num: Int = 5
var result: Int = 1

for i in 1...5 {
    result *= i
}

print(result)

result = 1
while num != 0 {
    result *= num
    num -= 1
}

print(result)

num = 5
result = 1

repeat {
    result *= num
    num -= 1
} while num != 1

print(result)

#5

А мне как-то вот так захотелось:

  extension Int {
       func factorial()->Int{
          guard self != 0 else {
             return 0
          }
           return (1...self).reduce(1, *)
        }
    }

let aaa = 5
let bbb = aaa.factorial()

Блин, не прочитал условия(


#6

тоже не плохо, но мне такое пока рано))


#7

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#8
repeat {
    result *= num
    num -= 1
} while num != 1

а в while точно num != 1? может num != 0 как в примере выше?я не придираюсь, может кто то как я будет делать и у него возникнет вопрос.


#9

Именно что 1 т.к. while - это цикл с предусловием (сначала идет проверка, затем выполняется действие), а repeat while - это цикл с постусловием (сначала действие, затем проверка).

К слову, в моих примерах включено умножение на единицу, но лучше делать без - лишнее действие:

for i in 2...5 

while num != 1

repeat ... while n != 2

все равно n*1 = n


#10

Как говорилось в институте: “Давай зачетку!”