Prikazi cijelu temu 03.10.2011 01:41
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Lokacija:Tuzla


Predmet:Rekurzija: funkcija koja pronalazi maksimum niza brojeva
PreuzmiIzvorni kôd (C#):
  1. /* Rekurzija: funkcija koja pronalazi maksimum niza brojeva */
  2.  
  3. #include <stdio.h>
  4.  
  5. /* Maximum cijelog niza je veci od dva broja:
  6.    pocetnog elementa niza i maksimuma ostalih elemenata niza.
  7.    Funkcija ispisuje dodatne informacije kako bi se razumjelo
  8.    funkcionisanje rekurzije.
  9. */
  10. int max_rek1(int a[], int n, int i) {
  11.         int rezultat;
  12.  
  13.         printf("Pozvana funkcija max za i = %d, n = %d\n", i, n);
  14.  
  15.         if (i == n-1) {
  16.                         printf("Jednoclan niz, max = %d\n", a[i]);
  17.                         rezultat = a[i];
  18.         } else {
  19.                 int max_ostatka = max_rek1(a, n, i+1);
  20.                 printf("a[i] = %d, ", a[i]);
  21.                 printf("max_ostatka = %d\n", max_ostatka);
  22.                 rezultat =  a[i] > max_ostatka ? a[i] : max_ostatka;
  23.         }
  24.         printf("zavrsen poziv za i = %d, n = %d\n", i, n);
  25.         printf("rezultat je: %d\n", rezultat);
  26.         return rezultat;
  27. }
  28.  
  29. /*
  30.         Umjesto na prvi element i rep niza, niz mozemo da razlozimo
  31.         tako sto posmatramo pocetni odsjecak i posljednji element. */
  32. int max_rek2(int a[], int n) {
  33.         if (n == 0) {
  34.                 /* Jednoclan niz */
  35.                 return a[n];
  36.         } else {
  37.                 int max_pocetka = max_rek2(a, n-1);
  38.                 return a[n] > max_pocetka ? a[n] : max_pocetka;
  39.         }
  40. }
  41.  
  42. main() {
  43.         int a[] = {2, 8, 3, 7, 9, 6, 4, 5, 1, 2};
  44.         int n = sizeof(a)/sizeof(int);
  45.         printf("%d\n", max_rek1(a, n, 0));

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.