Merhaba arkadaşlar. Aşağıdaki kodun mantığı nedir ve sonuç neden 11 çıkar.
int foo(int n) {
if (n != 0)
if (n%2==0)
return n + foo(n-1);
else
return n - foo(n-1);
else
return n;
}
foo(10);
****************
Şimdi burada n=10 oluyor ve return 10 + foo(9) satırını nasıl toplayacağız ki?
Bu kodun mantığını anlatır mısınız?
2
●204
- 29-10-2023, 15:15:56Hocam ben anlamam ama chat gpt şöyle diyor soruna cevap olarak

Bu kod, bir rekürsif (recursive) fonksiyon olan foo'yu tanımlar. Bu fonksiyon, bir tamsayı
alır ve aşağıdaki kurallara göre çalışır:- Eğer n sıfırdan farklı ise:
- Eğer n çift ise, n'yi n-1 ile çarpıp sonuca ekler.
- Eğer n tek ise, n'yi n-1 ile çarpıp sonuçtan çıkarır.
- Eğer n sıfırsa, fonksiyon n'yi geri döndürür.
- n = 10 olduğu için, n != 0 şartı sağlanır. Ayrıca n çift olduğundan, n + foo(n-1) yolu izlenir.
- return 10 + foo(9) ifadesi çalıştırılır.
- Şimdi foo(9) fonksiyonu çağrılır. Bu sefer n = 9 olur.
- n != 0 şartı yine sağlandığı için, n tek olduğundan, n - foo(n-1) yolu izlenir.
- return 9 - foo(8) ifadesi çalıştırılır.
- foo(8) fonksiyonu çağrılır. Bu sefer n = 8 olur.
- Bu işlem devam eder ve en sonunda foo(0) fonksiyonu çağrılır.
- Bu durumda, n = 0 olduğundan, return n; yani return 0; çalışır.
- Sonuçlar yukarı doğru sırasıyla hesaplanır: 0, 8 - 0 = 8, 9 - 8 = 1, 10 + 1 = 11.
- Eğer n sıfırdan farklı ise:
- 29-10-2023, 15:28:159.madde tam oturmadıryildirim1071 adlı üyeden alıntı: mesajı görüntüle
