Thread overview
Rekursif fonksiyon bir süre sonra hata veriyor
December 06, 2012

rekursif bir fonksiyon neden bir süre sonra hata verip kapanıyor?

void main(){
	x();
}

void x(){
	x();
}

bunun bir çözümü var mı?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 06, 2012

Her dilde öyledir. Her işlev çağrısı program yığıtından (program stack) bir miktar kullandığı için bir noktadan sonra yığıtta yer kalmaz.

Özyinelemeli işlevlerin o yüzden hep özyinelemeyi sonlandıran bir denetimleri olur:

void x(){
   if (bir_kosul) {
       x();
   }
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 07, 2012

Anladım ama bunu try catch ile yakalayamıyorum.

void main(){
	try{
		x();
	}catch{
	}
}

void x(){
	x();
}

bir yolu var mı yakalamanın?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 07, 2012

Programın kapanmadan önce verdiği hatayı söylemiyorsun. ;)

Hata (exception) atma düzeneği teknik olarak, Throwable'dan türemiş olan hataları yakalayabilir. Ama programın durumuna güvenebilmek açısından yalnızca Exception veya ondan türemiş olan hatalar yakalanmalıdır. (Error veya ondan türemiş olan hatalar değil.)

Senin durumunda hata atılıyor mu bile? (Örneğin, "segmentation fault" bu anlamda bir hata değildir. İşletim sistemi ile ilgili bir olanaktır.)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]