• 06-02-2025, 15:01:34
    #1
    Arkadaşlar merhaba aşağıdaki kodun cevabı neden 115 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));
    }
  • 06-02-2025, 15:09:00
    #2
    DeepSeek'e göre 91
  • 06-02-2025, 15:09:51
    #3
    By chatgpt;

    Tamam, çok basit bir şekilde anlatayım:
    1. Fonksiyon her çağrıldığında i değişkeni 1 artıyor.
    2. Fonksiyon, kendini iki kez çağırıyor:
      • f(y / 2)
      • f(y - 1)
    3. Bu yüzden fonksiyon çok fazla kez çalışıyor ve i sürekli artıyor.
    4. Sonuç olarak, f(4) çağrıldığında toplam 115 kez fonksiyon çalışmış oluyor.
    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ı.
  • 06-02-2025, 15:10:51
    #4
    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
    }
  • 06-02-2025, 15:15:24
    #5
    Bu kodun sonucunu adım adım inceleyelim.

    Verdiğiniz kod şu şekilde:

    ```cpp
    #include <stdio.h>

    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));
    return 0;
    }
    ```

    Kodda `i` adlı global bir değişken ve `f` adlı bir özyinelemeli fonksiyon tanımlanmış. `f` fonksiyonu her çağrıldığında `i` değişkenini arttırır. Eğer `y` 0 ise, `i` değerini döner. Aksi takdirde, `f` fonksiyonunu `y / 2` ve `y - 1` ile yeniden çağırır.

    `f(4)` fonksiyonunu analiz edelim:

    1. `f(4)` çağrılır ve `i` 1 olur. `f(2)` ve `f(3)` çağrılır.
    2. `f(2)` çağrılır ve `i` 2 olur. `f(1)` ve `f(1)` çağrılır.
    3. `f(1)` çağrılır ve `i` 3 olur. `f(0)` ve `f(0)` çağrılır.
    4. `f(0)` çağrılır ve `i` 4 olur, `i` değeri döner (4).
    5. `f(0)` tekrar çağrılır ve `i` 5 olur, `i` değeri döner (5).

    `f(1)` tekrar çağrılır:
    6. `f(1)` çağrılır ve `i` 6 olur. `f(0)` ve `f(0)` çağrılır.
    7. `f(0)` çağrılır ve `i` 7 olur, `i` değeri döner (7).
    8. `f(0)` çağrılır ve `i` 8 olur, `i` değeri döner (8).

    Bu noktada `f(1)` sonuçları toplanır: 15 olur. `f(3)` için:
    9. `f(3)` çağrılır ve `i` 9 olur. `f(1)` ve `f(2)` çağrılır.
    10. `f(1)` çağrılır ve `i` 10 olur. `f(0)` ve `f(0)` çağrılır.
    11. `f(0)` çağrılır ve `i` 11 olur, `i` değeri döner (11).
    12. `f(0)` çağrılır ve `i` 12 olur, `i` değeri döner (12).

    `f(2)` tekrar çağrılır:
    13. `f(2)` çağrılır ve `i` 13 olur. `f(1)` ve `f(1)` çağrılır.
    14. `f(1)` çağrılır ve `i` 14 olur. `f(0)` ve `f(0)` çağrılır.
    15. `f(0)` çağrılır ve `i` 15 olur, `i` değeri döner (15).
    16. `f(0)` çağrılır ve `i` 16 olur, `i` değeri döner (16).

    Sonuç olarak, `f(4)`'ün toplamda döndüreceği sonuç 41 olacaktır. Dolayısıyla, çıktı şu şekilde olacaktır:
    ```cpp
    41
    ```

    ## COPİLOT ##
  • 06-02-2025, 15:35:02
    #6
    kerem645 adlı üyeden alıntı: mesajı görüntüle
    Bu kodun sonucunu adım adım inceleyelim.

    Verdiğiniz kod şu şekilde:

    ```cpp
    #include <stdio.h>

    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));
    return 0;
    }
    ```

    Kodda `i` adlı global bir değişken ve `f` adlı bir özyinelemeli fonksiyon tanımlanmış. `f` fonksiyonu her çağrıldığında `i` değişkenini arttırır. Eğer `y` 0 ise, `i` değerini döner. Aksi takdirde, `f` fonksiyonunu `y / 2` ve `y - 1` ile yeniden çağırır.

    `f(4)` fonksiyonunu analiz edelim:

    1. `f(4)` çağrılır ve `i` 1 olur. `f(2)` ve `f(3)` çağrılır.
    2. `f(2)` çağrılır ve `i` 2 olur. `f(1)` ve `f(1)` çağrılır.
    3. `f(1)` çağrılır ve `i` 3 olur. `f(0)` ve `f(0)` çağrılır.
    4. `f(0)` çağrılır ve `i` 4 olur, `i` değeri döner (4).
    5. `f(0)` tekrar çağrılır ve `i` 5 olur, `i` değeri döner (5).

    `f(1)` tekrar çağrılır:
    6. `f(1)` çağrılır ve `i` 6 olur. `f(0)` ve `f(0)` çağrılır.
    7. `f(0)` çağrılır ve `i` 7 olur, `i` değeri döner (7).
    8. `f(0)` çağrılır ve `i` 8 olur, `i` değeri döner (8).

    Bu noktada `f(1)` sonuçları toplanır: 15 olur. `f(3)` için:
    9. `f(3)` çağrılır ve `i` 9 olur. `f(1)` ve `f(2)` çağrılır.
    10. `f(1)` çağrılır ve `i` 10 olur. `f(0)` ve `f(0)` çağrılır.
    11. `f(0)` çağrılır ve `i` 11 olur, `i` değeri döner (11).
    12. `f(0)` çağrılır ve `i` 12 olur, `i` değeri döner (12).

    `f(2)` tekrar çağrılır:
    13. `f(2)` çağrılır ve `i` 13 olur. `f(1)` ve `f(1)` çağrılır.
    14. `f(1)` çağrılır ve `i` 14 olur. `f(0)` ve `f(0)` çağrılır.
    15. `f(0)` çağrılır ve `i` 15 olur, `i` değeri döner (15).
    16. `f(0)` çağrılır ve `i` 16 olur, `i` değeri döner (16).

    Sonuç olarak, `f(4)`'ün toplamda döndüreceği sonuç 41 olacaktır. Dolayısıyla, çıktı şu şekilde olacaktır:
    ```cpp
    41
    ```

    ## COPİLOT ##
    Cansın hocam çok teşekkürler