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