Пример 1.

Массив из элементов структуры Pow2, заполняем значениями степеней 2-и в цикле repeat while и выводим значения с помощью метода forEach.

				
					struct Pow2 {
    var pow = 0
    var val = 0
}

var arrPow2 = Array<Pow2>()

var i = 1
let a = 2
var b = 1

repeat {
    b = b * a
    arrPow2.append(Pow2(pow: i, val: b))
    i += 1
}
while i < 11

arrPow2.forEach({print("2^\($0.pow) = \($0.val)")})

				
			

Пример 2.

Используя вложенные циклы for и repeat получаем последовательность простых чисел.

				
					var sim = true
var arr = [Int]()

for x in 2...1000 {
    var y = x - 1
    repeat {
        if x % y == 0 {
            sim = false
        }
        y -= 1
    } while y > 1
    if sim { arr.append(x) }
    sim = true
}
arr.forEach({print($0)})

				
			

Пример 3.

Вычисление последовательности чисел Фибоначи последовательно и программирование функций получения любого числа Фибоначи по формуле золотого сечения и с помощью рекурсивных функций.

				
					import UIKit

var f = 1
var t1 = 1
var t2 = 1
var dicFibo = [0:1, 1:1]

let sqrt5 = sqrt(5)
let fi = (1 + sqrt5)/2 // Золотое сечение

// Простейший метод последовательного получения ряда
for i in 2...92 {
    f = t2 + t1
    t2 = t1
    t1 = f
    
    print((i, f, Fibo(i+1), Fibo3(i+1)))
}
// Вычисление ЧФ по формуле золотого сечения
func Fibo(_ n: Int) -> Int {
    return Int(pow(fi, Double(n))/sqrt5 + 1/2)
}
// Рекусивнаяфункция полчения ЧФ
func Fibo2(_ n: Int) -> Int {
    return n > 2 ? Fibo2(n - 1) + Fibo2(n - 2) : 1
}
// Оптимальная рекурсивная ф-ия вычисления ЧФ по его номеру
func Fibo3(_ n: Int) -> Int {
    if(!dicFibo.contains(where: {$0.key == n})) {
        dicFibo[n] = n > 2 ? Fibo3(n - 1) + Fibo3(n - 2) : 1
    }
    return dicFibo[n]!
}

				
			
Swift 5 для начинающих. Урок 3 – циклы и функции.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.