Git - Özyineleme

Özyineleme, öğeleri kendine benzer bir şekilde tekrar etme işlemidir. Aynı kavram programlama dilleri için de geçerlidir. Bir program aynı işlevin içindeki bir işlevi çağırmaya izin veriyorsa, buna özyinelemeli işlev çağrısı denir. Aşağıdaki örneğe bir göz atın -

func recursion() {
   recursion() /* function calls itself */
}
func main() {
   recursion()
}

Go programlama dili özyinelemeyi destekler. Yani bir fonksiyonun kendisini çağırmasına izin verir. Ancak özyinelemeyi kullanırken, programcıların işlevden bir çıkış koşulu tanımlamada dikkatli olmaları gerekir, aksi takdirde sonsuz bir döngü haline gelecektir.

Go'da Özyineleme Örnekleri

Özyinelemeli fonksiyonlar, bir sayının faktöriyelini hesaplamak, bir Fibonacci serisi oluşturmak gibi birçok matematik problemini çözmek için çok kullanışlıdır.

Örnek 1: Go'da Özyineleme Kullanarak Faktöriyel Hesaplama

Aşağıdaki örnek, özyinelemeli bir işlev kullanarak belirli bir sayının faktöriyelini hesaplar -

package main

import "fmt"

func factorial(i int)int {
   if(i <= 1) {
      return 1
   }
   return i * factorial(i - 1)
}
func main() { 
   var i int = 15
   fmt.Printf("Factorial of %d is %d", i, factorial(i))
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

Factorial of 15 is 1307674368000

Örnek 2: Go'da Özyineleme Kullanan Fibonacci Serisi

Aşağıdaki örnek, özyinelemeli bir işlev kullanılarak belirli bir sayının Fibonacci serisinin nasıl oluşturulacağını gösterir -

package main

import "fmt"

func fibonaci(i int) (ret int) {
   if i == 0 {
      return 0
   }
   if i == 1 {
      return 1
   }
   return fibonaci(i-1) + fibonaci(i-2)
}
func main() {
   var i int
   for i = 0; i < 10; i++ {
      fmt.Printf("%d ", fibonaci(i))
   }
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

0 1 1 2 3 5 8 13 21 34