Задача №4. Вывести на экран n-ное число Фибоначчи.

Примечание: Задачу решал с помощью цикла $While$, для разнообразия.


<?php

function get_fibonachi($F)//Функция преобразования последовательности Фибоначчи.
{
	$c = 0;//счетчик цикла. 
	$sum = 1;
	$res = 0;
    
	while($c != $F) {
		 $c++;
		 $sum += $res;
		 $res = $sum - $res;
    
		 echo " Последовательность для Фибоначчи: ", $res, "<BR>";
	}
}

$F = 20;//число Фибоначчи.
echo get_fibonachi($F);

?>

vedro-compota's picture

function get_fibonachi($F)//Функция преобразования последовательности Фибоначчи.
{
    $c = 0;//счетчик цикла. 
    $sum = 1;
    $res = 0;
     
    while($c != $F)
    {
        $c++;
        $sum += $res;
        $res = $sum - $res;
     
        echo " Последовательность для Фибоначчи: ", $res, "<BR>";
    }
     
}
 
$F = 20;//число Фибоначчи.
echo get_fibonachi($F);
  • Ваша функция ничего не возвращает,
    но вы передаете её вызов в качестве аргумента echo:
    echo get_fibonachi($F);
    

    Зачем? Понимаете ли вы, что это бессмысленно, ведь ваша функци возвращает null
    (раз нет return), да ещё и сама выводит ответ.
    А потому вам при таком решении следовало просто вызвать его:

    get_fibonachi($F);
  • ваша функция должна выводить только N-ое число, а не все до него.
  • функция не должна (крайне не рекомендуется)
    оказывать побочный эффект -- возвращайте из неё значение (return),
    а затем выводите его на экран уже снаружи, как вы и делали:
    echo get_fibonachi($F);
    

В оформлении есть неточность -- в некоторых блоках
мы оставляем открывающую фигурную скобку на той же строке
(см. "Фигурные скобки для разных блоков")

_____________
матфак вгу и остальная классика =)

sid's picture

Прошу проверить повторно.


<?php

function get_fibonachi($F)//Функция преобразования числа Фибоначчи.
{
    $c = 0;//счетчик цикла. 
    $sum = 1;
    $res = 0;
    
    while($c != $F) {
        $c++;
        $sum += $res;
        $res = $sum - $res;
    }
    return $res;
}
 
$F = 20;//число из которого получаем Фибоначчи.
echo " Число Фибоначчи для \$F = $F   ", get_fibonachi($F);

?>


vedro-compota's picture

всё верно. только ruturn чуть сдвинут на пробел)

_____________
матфак вгу и остальная классика =)

Только к строке лучше добавить \$F:

echo " Число Фибоначчи для \$F = $F   ", get_fibonachi($F);
sid's picture

Сначала посмотрел не внимательно и было не понятно для чего добавлять $F, Теперь понятно спасибо)) исправлю там же.