/* Rekurzija: funkcija koja pronalazi maksimum niza brojeva */
#include <stdio.h>
/* Maximum cijelog niza je veci od dva broja:
pocetnog elementa niza i maksimuma ostalih elemenata niza.
Funkcija ispisuje dodatne informacije kako bi se razumjelo
funkcionisanje rekurzije.
*/
int max_rek1(int a[], int n, int i) {
int rezultat;
printf("Pozvana funkcija max za i = %d, n = %d\n", i, n);
if (i == n-1) {
printf("Jednoclan niz, max = %d\n", a[i]);
rezultat = a[i];
} else {
int max_ostatka = max_rek1(a, n, i+1);
printf("a[i] = %d, ", a[i]);
printf("max_ostatka = %d\n", max_ostatka);
rezultat = a[i] > max_ostatka ? a[i] : max_ostatka;
}
printf("zavrsen poziv za i = %d, n = %d\n", i, n);
printf("rezultat je: %d\n", rezultat);
return rezultat;
}
/*
Umjesto na prvi element i rep niza, niz mozemo da razlozimo
tako sto posmatramo pocetni odsjecak i posljednji element. */
int max_rek2(int a[], int n) {
if (n == 0) {
/* Jednoclan niz */
return a[n];
} else {
int max_pocetka = max_rek2(a, n-1);
return a[n] > max_pocetka ? a[n] : max_pocetka;
}
}
main() {
int a[] = {2, 8, 3, 7, 9, 6, 4, 5, 1, 2};
printf("%d\n", max_rek1(a, n, 0));