Rekurencyjne odwracanie tablicy w C

0

Witam mam problem z następującym kodem mającym odwracać rekurencyjnie tablicę w C

int* revR (int* array, int n)
{
	static int i = 0;
  int temp;
	if ((n-1) <= i)
    return array;
    
	temp = array[n-1];
	array[n-1] = array[i];
	array[i++] = temp;
	return revR(array, n-1);
}

w borlandzie i w Visual studio działa bez problemów ale mam problem na stronie codewars. Czy jest jakiś błąd w kodzie?

0

Pewnie w jakims tescie na Codewars tablica jest za duza I rozwala stos. Zamien rekurencje na iteracje.

0
lion137 napisał(a):

Pewnie w jakims tescie na Codewars tablica jest za duza I rozwala stos. Zamien rekurencje na iteracje.

To jest komunikat ze strony codewars. Program buraczy się na 5-cio elementowej tablicy
The expression !memcmp (revR ((int[]){1,2,3,4,5}, 5), (int[]){5,4,3,2,1}, 5*sizeof(int)) is false.

0

Funkcja przekazuje i zwraca zawsze ten sam wskaźnik array? Zastanowiłbym się nad void revR (int* array, int n) lub nad zmianą algorytmu. Teraz funkcja odwróci prawidłowo tylko jedną tablicę. Przy kolejnym wywołaniu i będzie różne od 0.

1 użytkowników online, w tym zalogowanych: 0, gości: 1