Rekursionsproblem

Oetzicool

Erfahrenes Mitglied
Hey Leute ich hänge grad nen weng an nem kleinen Problem fest. Ich habe eine Funktion reduceSize welche die Höhe und Breite abprüfen. Wenn einer der Beiden werte einen Wert über dem "legalen" Bereich hat, werden die Werte um 25% verkleinert und die Funktion nochmal aufgerufen. Die Berechnung an sich funktioniert ohne Probleme aber wenn ich dann den Fall erreich hat, dass sich die Werte im "legalen" Bereich befinden funktioniert der return nicht. D.h. sie werden nicht übergeben an die Funktion die reduceSize aufruft. Habt ihr vieleicht ne idee bin echt am verzweifeln :confused:

PHP:
$newSize = reduceSize($height,$width);
$newHeight = $newSize[0];
$newWidth = $newSize[1];
echo "Neue größe: ".$newHeight." und ".$newWidth."<br>";

PHP:
	function reduceSize($height,$width)
	{
		if(($height > 600) || ($width > 800))
		{
			$newHeight = round($height*0.75);
			$newWidth = round($width*0.75);
			reduceSize($newHeight,$newWidth);
		} else {
			return array($height,$width);	
		}
	}
 
Code:
	function reduceSize($height,$width)
	{
		if(($height > 600) || ($width > 800))
		{
			$newHeight = round($height*0.75);
			$newWidth = round($width*0.75);
			return reduceSize($newHeight,$newWidth);
		} else {
			return array($height,$width);	
		}
	}
 
Das fehlende return. Auch der rekursive Aufruf muss seine Daten zurückgeben.

In Deinem Fall gab der Aufruf die Daten array() nur eine Ebene tiefer zurück, da war aber ein Funktionsaufruf ohne return. Also eben auch diesen mit return return return bis zum initialen Funktionsaufruf "runterreichen".

mfg chmee
 
Zurück