#include <stdio.h>
int x=2,y=4,z=17,w=3,count=0;
void p(int z,int *x){
*x= 3*z - *x;
int w=*x+z;
printf("%d %d %d %d \n",*x,y,z,w);
if(*x<=y){
p(*x+1,&w);
printf("%d %d %d %d \n",*x,y,z,w);
}
}
int main(void){
p(1,&x);
printf("%d %d %d %d \n",x,y,z,w);
return 0;
}
Ich versuche, diesen Code von Hand ausführen, um die Ausgabe aber die Ergebnisse zu nehmen, die ich von Hand produzieren unterscheiden sich von der Ausgabe, die ich habe, wenn ich es kompilieren und ausführen. Kann mir jemand im Detail erklären, wie die Ausgabe des Programms erstellt wird?Rekursion mit Zeigern in C
Die Ausgabe, die geben soll, ist
1 4 1 2
4 4 2 6
9 4 5 14
4 4 2 9
1 4 1 4
1 4 17 3
Welche Ergebnisse erhalten Sie von Hand? –
Dies ist eine wirklich schlecht geschriebene Rekursion, sehr schwer zu folgen. Hat es einen anderen Zweck als verwirrte Menschen? –
ich bekomme 1 4 1 2 \ 4 4 2 6 \ 9 4 5 14 von hand. Danach weiß ich nicht weiter. Das war eine Übung in einer Prüfung. –