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.