Bu dersimizde recursive yani kendini çağıran fonksiyonlardan bahsedeceğiz.
Recursive fonksiyonlara en çok verilen örnek faktoriyel hesaplamadır. Biz de bu dersimizde önce normal bir döngü ile daha sonra da recursive yöntemle verilen bir sayının faktoriyel değerini bulmayı öğreneceğiz.
Ayrıca bu derste BigInteger veri tipinden ve özellikle büyük sayılar verdiğimizde karşımıza çıkan stack flow hatasını nasıl önleyeceğimizden ve de tailrec anahtar kelimesinin kullanımından bahsedeceğiz.
Bu derste yazılan kodlar aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import java.math.BigInteger fun main(args : Array<String>){ var sonuc=faktoriyelHesapla(BigInteger("170000"), BigInteger.ONE) println(sonuc) } tailrec fun faktoriyelHesapla(faktoriyeliHesaplanacakSayi:BigInteger, sonuc:BigInteger):BigInteger{ if(faktoriyeliHesaplanacakSayi== BigInteger.ZERO){ return sonuc } else { return faktoriyelHesapla(faktoriyeliHesaplanacakSayi - BigInteger.ONE, faktoriyeliHesaplanacakSayi * sonuc) } } |