Zahl annähern
Klaus
- php
Hallo,
ich muss in PHP einen Algorithmus schreiben, der sich einer Zahl möglichst schnell annähert.
Idee:
Zahlenraum 1 bis 32, Zahl gegeben: 25
Man fängt in der Mitte an, 16.
Gesuchte Zahl ist größer. (32+16)/2= 24
25 ist größer als 24: (24+32)/2=28
25 ist kleiner als 28: (28+24)/2=26
25 ist kleiner als 26: (26+24)/2=25
Fertig.
Diese Annäherung nennt man auch "Binärer Baum".
Leider komme ich bei der Implementierung nicht weiter, evt. kann mir jmd. helfen oder hat so einen Script schonmal gefunden.
Grüße
Klaus
Hallo,
habs geschafft:
<?php
$z = 15;
$jg = 32;
$jk = 0;
$j = 16;
for($i=0;$i<50;$i++)
{
if($j == $z)
{
echo "richtig $j<br>";
break;
}
else if($z > $j)
{
echo "größer als $j | $jg | $jk<br>";
$jk = $j;
$j = floor(($jg+$j)/2);
}
else if($z < $j)
{
echo "kleiner als $j | $jg | $jk<br>";
$jg = $j;
$j = floor(($jk+$j)/2);
}
}
?>
P.S. Die For Schleife müsste man durch eine Endlosschleife oder so ersetzen ;)
Sry für die Belästigung.
Grüße
Klaus