Swift Özyineleme (Örneklerle)

Bu makalede, özyinelemeli bir işlev oluşturmayı öğreneceksiniz; kendini çağıran bir işlev.

Kendini çağıran bir işlev, özyinelemeli bir işlev olarak bilinir. Ve bu teknik, özyineleme olarak bilinir. Özyinelemeli bir işlev oluştururken, işlevin kendisini sonsuza kadar (sonsuza kadar) çağırmaması için bir koşul yaratmalısınız.

Swift'de özyineleme nasıl çalışır?

 func recurse () (// deyimler recurse ()) recurse () 

Aşağıdaki şekil kendisini tekrar tekrar arayarak özyinelemenin nasıl çalıştığını göstermektedir.

Yukarıdaki akış diyagramında özyineleme sonsuz olarak yürütülür. Ancak, neredeyse her zaman, bazı koşullar karşılanana kadar çalışan bir özyineleme yaratırsınız.

Sonsuz özyinelemeyi önlemek için, Swift Koşullu İfadeleri içindeki özyinelemeli çağrıyı kullanın, örneğin if …

Örnek 1: N pozitif sayı yazdırın

 func countDownToZero(num: Int) ( print(num) if num> 0 ( countDownToZero(num: num - 1) ) ) print("Countdown:") countDownToZero(num:3) 

Aşağıdaki programı çalıştırdığınızda, çıktı:

 Geri sayım: 3 2 1 0

Yukarıdaki programda ifade , konsolda Geri Sayım:print("Countdown:") çıktısını verir . Ve ifade , bir parametre alan işlevi çağırır .countDownToZero(num:3)Integer

İşlevin içindeki ifade countDownToZero()yürütülür ve koşul num> 0karşılanırsa işlev countDownToZero()yeniden çağrılır countDownToZero(num: num - 1).

Koşul karşılanmazsa, işlev çağrısı yapılmaz ve özyineleme durur.

Bunu adım adım görelim

Yürütme adımları
Adımlar İşlev çağrısı Basılı num> 0?
1 countDownToZero(3) 3 Evet
2 countDownToZero(2) 2 Evet
3 countDownToZero(1) 1 Evet
4 countDownToZero(0) 0 Hayır (Biter)

Örnek 2: Bir sayının faktöriyelini bulun

 func factorial(of num: Int) -> Int ( if num == 1 ( return 1 ) else ( return num * factorial(of:num - 1) ) ) let x = 4 let result = factorial(of: x) print("The factorial of (x) is (result)") 

Aşağıdaki programı çalıştırdığınızda, çıktı:

 4'ün faktöriyeli 24'tür

Bu örnek nasıl işliyor?

Bunu adım adım görelim

Yürütme adımları
Adımlar Argüman geçti Dönüş ifadesi Değer
1 4 return 4 * factorial(of:3) 4 * faktöriyel (of: 3)
2 3 return 3 * factorial(of:2) 4 * 3 * faktöryel (/: 2)
3 2 return 2 * factorial(of:1) 4 * 3 * 2 * faktöryel (of: 1)
4 1 return 1 4 * 3 * 2 * 1

Bir sorunun çözümü yaklaşık iki adımda bulunabildiğinde, genellikle özyineleme, yinelemenin yerine kullanılır. İlk adım, işlemi tekrar etmezse bir çözüm arar.

Ilginç makaleler...