Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 43

[36-50] Sorular İçin Açıklama
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gec kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int f1(int *arr, int size) { 
if (size == 1) { 
return *arr; 
} 
int m = f1(arr + 1, size - 1); 
return (*arr > m) ? *arr : m; 
} 
int f2(int *arr, int size, int t) { 
if (size == 0)return 0; 
return (*arr == t) + f2(arr + 1, size - 1, t); 
} 
int main() { 
int arr[]= {1,9,2,3,9,2,8,4,9,6,3,2,6,2,3,5,6,7,2,3}; 
int size = 20; 
printf("%d", f2(arr,size,f1(arr, size))); 
return 0; 
} 
```
Yukarıdaki kod parçası hangi çıktıyı üretir?

Şıklar:
A) 1 
B) 2 
C) 3 
D) 4 
E) 5

Cevap: C 3

Çözüm:
f1fonksiyonu bir dizi içerisindeki en büyük sayıyı bulmaya yaramaktadır. f1(arr,20) şeklinde 
çağırıldığında ilk eleman diziden ayrılıp kalan kısmın maksimum değeri yine aynı fonksiyon 
ile hesaplanır ve hangisi daha büyükse fonksiyon o değeri return eder. Sonuçlar aşağıdan 
yukarı doğru gelir. 
 
1 ile kalan dizinin maksimumu {9, 2, 3, 9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
9 ile kalan dizinin maksimumu {2, 3, 9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
2 ile kalan dizinin maksimumu {3, 9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
3 ile kalan dizinin maksimumu {9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
9 ile kalan dizinin maksimumu {2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
2 ile kalan dizinin maksimumu {8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
8 ile kalan dizinin maksimumu {4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
4 ile kalan dizinin maksimumu {9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
9 ile kalan dizinin maksimumu {6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐9 
6 ile kalan dizinin maksimumu {3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐7 
3 ile kalan dizinin maksimumu {2, 6, 2, 3, 5, 6, 7, 2, 3} ☐7 
2 ile kalan dizinin maksimumu {6, 2, 3, 5, 6, 7, 2, 3} ☐7 
6 ile kalan dizinin maksimumu {2, 3, 5, 6, 7, 2, 3} ☐7 
2 ile kalan dizinin maksimumu {3, 5, 6, 7, 2, 3} ☐7 
3 ile kalan dizinin maksimumu {5, 6, 7, 2, 3} ☐7 
5 ile kalan dizinin maksimumu {6, 7, 2, 3} ☐7 
6 ile kalan dizinin maksimumu {7, 2, 3} ☐7 
7 ile kalan dizinin maksimumu {2, 3} ☐7 
2 ile kalan dizinin maksimumu {3}  3 
 
Daha sonra f2 fonksiyonu da f2(arr, 20, 9) şeklinde çağırılır. Bu fonksiyonun amacı da verilen 
sayının dizi içerisinde kaç kez geçtiğini hesaplamaktır. Sonuçlar aşağıdan yukarı doğru 
hesaplanarak gelir. 
 
1 ile t (9) eşit mi {9, 2, 3, 9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐3 
9 ile t (9) eşit mi {2, 3, 9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐3 
2 ile t (9) eşit mi {3, 9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐2 
3 ile t (9) eşit mi {9, 2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐2 
9 ile t (9) eşit mi {2, 8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐2 
2 ile t (9) eşit mi {8, 4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐1 
8 ile t (9) eşit mi {4, 9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐1 
4 ile t (9) eşit mi {9, 6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐1 
9 ile t (9) eşit mi {6, 3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐1 
6 ile t (9) eşit mi {3, 2, 6, 2, 3, 5, 6, 7, 2, 3} ☐0 
3 ile t (9) eşit mi {2, 6, 2, 3, 5, 6, 7, 2, 3} ☐0 
2 ile t (9) eşit mi {6, 2, 3, 5, 6, 7, 2, 3} ☐0 
6 ile t (9) eşit mi {2, 3, 5, 6, 7, 2, 3} ☐0 
2 ile t (9) eşit mi {3, 5, 6, 7, 2, 3} ☐0 
3 ile t (9) eşit mi {5, 6, 7, 2, 3} ☐0 
5 ile t (9) eşit mi {6, 7, 2, 3} ☐0 
6 ile t (9) eşit mi {7, 2, 3} ☐0 
7 ile t (9) eşit mi {2, 3} ☐0 
2 ile t (9) eşit mi {3} ☐0 
{} size 0 olduğu için sonuç  0