Dr. Volkan Tunalı'nın Kişisel Blogu

Bilgisayar, Teknoloji, Bilim, Sanat

Archive for Şubat, 2009

Özyinelemeli Lambda İfadesi Yazmak

leave a comment

C#’ta özyinelemeli (recursive) bir lambda ifadesi yazılabilir mi? Programcılık mantığıyla zor olmaz gibi geliyor ilk bakışta:

Func<int, int> fac = null;
fac = x => x == 0 ? 1 : x * fac(x - 1);
int f5= fac(5);

Ne kadar kolay değil mi? Ama yanılgıya düşülen nokta şu: örnekte özyinelemeli bir lambda ifadesi değil özyinelemeli bir fonksiyon yapmış olduk. Harici bir Func tanımı olmaksızın, sadece tek bir ifade (expression) ile istediğimizi yapabilir miydik? Daha doğrusu matematiksel anlamda gerçek bir lambda ifadesini özyinelemeli olarak oluşturabilir miyiz ve bunu C# ile yapabilir miyiz?

Nasıl olabileceğiyle ilgili msdn’de The Mellow Musings of Dr.T adlı günlükte bu konuda güzel bir makale var, meraklılarına tavsiye ederim.

Written by vtunali

Şubat 20th, 2009 at 7:58 pm