floppy21
Goto Top

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

Content-Key: 176031

Url: https://administrator.de/contentid/176031

Printed on: April 16, 2024 at 11:04 o'clock