/* Rekurzija: funkcija koja pronalazi maksimum niza brojeva */ #include /* 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}; int n = sizeof(a)/sizeof(int); printf("%d\n", max_rek1(a, n, 0));