Bahsettiğiniz fonksiyon tipine recurrisve fonksiyon denir.
Yani kendini yineleyen fonksiyonlar. Bazı durumlarda kullanmaktan başka çare yoktur ama mümkün olduğunca kullanmamak daha iyi olur.
Kullandığınızda da algoritmadaki tüm değişkenleri iyi hesap etmeniz lazım yoksa yanlışlıkla sonsuz döngüye girebilirsiniz.
Mesela bir sayının faktöriyellerini hesaplayan recurrsice fonksiyon.
function faktoriyel($sayi)
{          
if ($sayi < 2){
return 1;
} else {
return ($sayi * faktoriyel($sayi-1));
}
}