Recursions
Recursion, kelime anlamıyla kendi kendini öz yineleme anlamına gelmektedir. Bir fonksiyon yaptığı işleri çağrıldığında yineliyorsa recursive function adını alır.
Faktöriyel işlemi ile açıklamak gerekirse :
func Faktoriyel(x uint) uint {
if x == 0 {
return 1
}
return x * Faktoriyel(x-1)
}
Yukarıda gördüğünüz fonksiyon kendi içerisinde her defasında x değerini bir önceki x değerine ait Faktoriyel(x-1) fonksiyonu ile çarpmaktadır. Geri doğru devam eden bu faktöriyel çarpım işlemi x==0 olduğunda 1 değerini alır ve işlem sonlanır.
Yani faktöriyel işlemini ters bir şekilde ifade edersek :
x * (x-1) * (x-1-1) * (x-1-1) * .... * 1
Bizim örneğimizde farz-ı misal x=5 dersek
//x * (x-1) * (x-1-1) * (x-1-1) * .... * 1
5 * 4 * 3 * 2 * 1
işleminin sonucu gelecektir
Şimdi kodumuzu çalıştıralım :
package main
import "fmt"
func Faktoriyel(x uint) uint {
if x == 0 {
return 1
}
return x * Faktoriyel(x-1)
}
func main() {
x := lessons.Faktoriyel(5)
fmt.Println(x)
}
Ekrana 120 değeri yazdırılacaktır.