int i = 0;  // Global değişken. Fonksiyon her çağrıldığında artar.

int f(int y)
{
i++; // Her çağrıda i'yi artır.
if (y == 0) // Taban durumu: y 0 olduğunda
return i; // i'nin güncel değerini döndür.

// Rekürsif çağrılar:
// 1. y'yi yarıya bölerek f(y / 2)
// 2. y'yi bir azaltarak f(y - 1)
return f(y / 2) + f(y - 1);
}

int main()
{
// f(4) çağrıldığında toplam 115 rekürsif çağrı olur.
// Her çağrıda i++ olduğu için i = 115 olur.
// Bu yüzden çıktıda 115 yazdırılır.
printf("%d\n", f(4)); // Çıktı: 115
}