Witam program który napisałem zwraca głupoty nie wiem dlaczego . Proszę o pomoc. Wprowadzając dane 3 24 30 36 zwraca 2 a powinien 6.
#include <iostream>
using namespace std;
int NWD(int a, int b){
int r = a % b;
while(r != 0){
a = b;
b = r;
r = a % b;
}
return b;
}
int NWD(int a[], int n){
int dzielnik = NWD(a[0], a[1]);
for (int i = 2; i <= n; i++)
dzielnik = NWD(dzielnik, a[i]);
return dzielnik;
}
int main() {
int n;
cin >> n;
int liczba[n];
for (int i = 0; i < n; i++)
cin >> liczba[i];
cout << NWD(liczba, n) << endl;
}