Advertisement
Guest User

fakotirjelRekurzija

a guest
Jan 24th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void popuniFakt(int*, int, int);
  5.  
  6. int main()
  7. {
  8.     int duzina;
  9.  
  10.     cout << "Unesite duzinu niza : ";
  11.     cin >> duzina;
  12.  
  13.     int* p_niz = new int[duzina];
  14.  
  15.     popuniFakt(p_niz, duzina, 0);
  16.  
  17.     for (int i = 0; i < duzina; i++)
  18.     {
  19.         cout << "NIZ[" << i + 1 << "] : " << *(p_niz + i) << endl;
  20.     }
  21.  
  22.     system("pause");
  23.     return 0;
  24. }
  25.  
  26. void popuniFakt(int* p_niz, int duzina, int indeks)
  27. {
  28.     if (indeks == duzina) // bazni slucaj
  29.         return;
  30.     else if (indeks == 0)
  31.         *(p_niz + indeks) = 1; // ako je prvi clan niza dodjeli vrijednost 1
  32.     else
  33.     {
  34.         *(p_niz + indeks) = *(p_niz + indeks - 1) * (indeks + 1); // primjer. 5! = 4! * 5  --- faktorijel od 4 je prosli clan a 5 je indeks + 1, tako dobijemo 5!
  35.         if (*(p_niz + indeks) / *(p_niz + indeks - 1) != (indeks + 1)) // provjera za overflow -- isti primjer ko gore. 5! / 4! = 5, ako nije tako onda se desio overflow
  36.             return;
  37.     }
  38.  
  39.     popuniFakt(p_niz, duzina, indeks + 1);
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement