So kehren Sie ein Array in der Sprache C rekursiv um

In diesem Tutorial möchten wir eine Array-Inversionsfunktion rekursiv codieren. Es stellt sich heraus, dass die rekursive Methode im Vergleich zur iterativen schwieriger ist, aber ein rekursives Programm formaler ist.
Zunächst müssen wir die Fälle der Rekursion definieren. Zuerst müssen Sie das Programm der iterativen Methode schreiben, um zu verstehen.

Elemente eines Arrays in C++ umkehren

Diese Abbildung erklärt in drei Schritten die Funktionsweise der Permutation zwischen dem i und die n-i,  Der Vorgang wird wiederholt, bis die Hälfte der Länge des Gemäldes erreicht ist. Wir müssen die Operation nur auf der ersten Hälfte des Arrays wiederholen, andernfalls tauschen wir die Elemente der zweiten Hälfte mit denen der ersten Hälfte aus, die bereits verarbeitet wurden, und greifen dort auf unser Startarray zurück.

Der folgende Code tauscht ein Array mit der iterativen Methode aus:

#include< conio.h> 
#include< stdio.h>

int main()
{
int i,n,temp;

printf("Array-Größe ");
scanf("%d",& n);
int t[n];

for(i=0; Ich< n; i++)
{
printf("t[%d]=",i);
scanf("%d",& t[i]);
}
i=0;
while(i< n/2)
{
temp = t[i];
//n-1, da das Array mit 0
t[i]=t[n-1-i];
t[n-1-i]=temp;
i++;
}

printf("\nInverse Tabelle: \n");
für(i=0; Ich< n; i++)
{
printf("\nt[%d]=%d",i,t[i]);
}
getch();
}
Die Ausführung dieses Codes ergibt:

Invertieren Sie ein Array in C mit der rekursiven Methode

Nachdem wir nun unser Programm für die iterative Methode haben, erstellen wir eine formale Version. Sie werden die Frage stellen, wovon es sich unterscheidet? Brunnen! Die rekursive Version ist eine Funktion, die sich selbst aufruft, bis sie den Drehpunkt erreicht. Dieser rekursive Aufruf ist das Äquivalent der Schleife in der iterativen Version.

Sie müssen nur das iterative Programm übersetzen, um ein rekursives Programm zu erhalten. Der Drehpunkt ist die Stoppbedingung in der while-Schleifei< n/2 (im Programm setzen wir i>=(n+1)/2 da beim Aufruf der Funktion die Größe des Arrays n-1 verringert wurde). i wird zum Hauptparameter der Funktion, da der Stopptest nach jedem Inkrement von i.

Das folgende Beispiel zeigt, wie die Elemente eines Arrays in C.

#include< conio.h> 
#include< stdio.h>

int* inverse(int[],int,int);

main()
{
int i,n;
printf("Die Größe des Arrays");
scanf("%d",& n);
int t[n];
int *ti;
für(i=0; Ich< n; i++)
{
printf("t[%d]=",i);
scanf("%d",& t[i]);
}
ti=invers(t,n-1,0);

printf("\nDas umgekehrte Array ist: \n");
für(i=0; Ich< n; i++)
{
printf("\nt[%d]=%d",i,ti[i]);
}
getch();
}

int* inverse(int t[],int n, int i)
{
int temp;
if(i>=(n+1)/2 )
return t;
else{
temp = t[i];
t[i]=t[n-i];
t[n-i]=temp;
inverser Rücklauf (t,n,i+1);
}
}
Das Kompilieren und Ausführen dieses Codes führt zu Folgendem: