Ben hep farklı bir sayı buluyorum 
int i = 0;
int f(int y)
{
i++;
if (y == 0)
return i;
return f(y / 2) + f(y - 1);
}
int main()
{
printf("%dn",f(4));
}
5
●316
Tamam, çok basit bir şekilde anlatayım:Yani aslında ekrana i değişkeninin değeri yazdırılıyor ve bu değerin 115 olmasının sebebi çok fazla fonksiyon çağrısı olması.
- Fonksiyon her çağrıldığında i değişkeni 1 artıyor.
- Fonksiyon, kendini iki kez çağırıyor:
- f(y / 2)
- f(y - 1)
- Bu yüzden fonksiyon çok fazla kez çalışıyor ve i sürekli artıyor.
- Sonuç olarak, f(4) çağrıldığında toplam 115 kez fonksiyon çalışmış oluyor.
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
}