<form method="get" action="Index.php"> <fieldset> <label for="powerof">Fibonacci: </label> <input type="text" name="powerof" value="<?php echo $_GET['powerof']; ?>"/> <input type="submit" name='Go' value="Calculate" /> </fieldset> </form> <?php $message = 'The fibonacci sequence is: <br />1<br />2<br />'; $powerof = 0; $max = 5; $temp = $max; if (isset($_GET['powerof'])) { $powerof = $_GET['powerof']; } if ($powerof > 100) { $powerof = 100; $message = 'Sorry, your input was too high. I converted it to the maximum value of 100.<br />The fibonacci sequence is: <br />1<br />2<br />'; } $i = 1; for ($i; $i < $powerof; $i++) { $max = $max * $temp; } $x = 1; $y = 2; $z = $x + $y; echo($message); while ($z < $max) { $z = $x + $y; echo($z . "<br />"); $x = $y; $y = $z; } ?>
это мой код, и проблема в том, что если при вводе 1 в текстовое поле вместо того, чтобы показывать только 1-е число в последовательности, он показывает первые 4, поэтому для 2 он отображает 1 2 3 5 8 13 21 34, а не просто 1 2, любые ides ребята ???
Ваша ошибка:
for ($i; $i < $powerof; $i++) { $max = $max * $temp; }
После этого цикла значение $max
var равно 5^$powerof
, чего вы не хотите. Просто удалите эту часть, и она должна работать нормально.
Также измените свой тест на
while ($z < $max) {
в
while ($z <= $max) {
если вы хотите включить максимальное значение.
<label for="powerof">Fibonacci: </label> <input type="text" name="powerof" value="<?php echo $_GET['powerof']; ?>"/> <input type="submit" name='Go' value="Calculate" /> </fieldset> </form> <?php $message = 'The fibonacci sequence is: <br />1<br />2<br />'; $powerof = 0; $max = 10; $temp = $max; if (isset($_GET['powerof'])) { $powerof = $_GET['powerof']; } if ($powerof > 100) { $powerof = 100; $message = 'Sorry, your input was too high. I converted it to the maximum value of 100.<br />The fibonacci sequence is: <br />1<br />2<br />'; } $x = 0; $y = 1; $z = 0; $counter = 0; while ($counter < $powerof) { if ($counter <= 1) { $z = 1; } else { $z = $x + $y; } echo($z."<br />"); $x = $y; $y = $z; $counter++; } ?>
это рабочая версия