Script- Verständnis- Frage
Guten Abend,
im folgenden möchte Ich Euch ein kleines *.c- Script vorstellen, wobei Ich eine Frage zu dessen Funktionsweiße habe.
#include<stdio.h>
main()
{
printf("%i", f(3, 9));
system("pause");
return 0;
}
f(unsigned int a, unsigned int b)
{
unsigned int x = 0;
if(b == 0)
{
return 1;
}
x = f(a, b / 2);
x = x * x;
if (b % 2 == 1)
{
x = x * a;
}
return x;
}
Hierzu habe Ich dieses ein wenig abgeändert, um die einzelnen Schritte im Sinne der Variablenveränderungen besser verfolgen zu können.
http://s1.directupload.net/images/111109/wuhmcsb4.png
Mit dem Aufruf der Funktion f wird x der wert aus f(a, b / 2) zugewießen, die rekursion läuft somit solange bis b = 1 ist und halbiert wird und somit
dank des Types Integer als 0 gillt (1 / 2 = 0.5). Als nächstes wird x zu x * x, also x = 1 * 1 = 1. Im nächsten Schritt wird, wenn b eine ungerade Zahl ist-
x = x * a zugewiesen, das heißt x = 1 * 3 = 3. Letztendlich kommt man das erste mal zu 4. (siehe Bild) und mit return x;- wird x (also 3) wiedergegeben.
Somit kommen wir auch schon zu meiner Frage, meiner Meinung nach müsste nach dem ersten 4., die Funktion ihr entgültiges Ende finden,
jedoch ist dies nicht so- Waran liegt das, was habe Ich übersehen?
Vielen Dank für Eure Hilfe und Eure Zeit.
Mit freundlichen Grüßen,
Floppy21
/edit_1, Frage hat sich geklärt
Please also mark the comments that contributed to the solution of the article
Content-Key: 176031
Url: https://administrator.de/contentid/176031
Printed on: April 23, 2024 at 20:04 o'clock