Учебные задачи PHP. Задача 4

Решение для четвёртой задачи из списка

<?php 
/**
 * Решение для задачи №4 из курса PHP
 * 
 * Вывести на экран n-ное число Фибоначчи.
 */

  $iteration = 8;
  $res = findFibonachiElem($iteration);
  
  echo $res;

  function findFibonachiElem($count, $num1 = 0, $num2 = 1) {
    //В качестве параметров принимается три значения
    //первый - количество итераций, или номер получаемого элемента последовательности
    // второй и третий - устанавливают начальную последовательность со значениями по умолчанию 
    $fib = [$num1, $num2];
    
    for($i = 1; $i < $count; $i++) {      
      $fib[] = $fib[$i] + $fib[$i-1];
    }
    return $fib[$i];
  }

?>
vedro-compota's picture

function findFibonachiElem($count, $num1 = 0, $num2 = 1) {
    //В качестве параметров принимается три значения
    //первый - количество итераций, или номер получаемого элемента последовательности
    // второй и третий - устанавливают начальную последовательность со значениями по умолчанию 
    $fib = [$num1, $num2];
     
    for($i = 1; $i < $count; $i++) {      
      $fib[] = $fib[$i] + $fib[$i-1];
    }
    return $fib[$i];
  }

дайте альтернативное решение без массива, тут вы просто скидываете
в него элементы, а потом возвращаете один-единственный.

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

toyrik's picture

Массив для решения не обязателен. Просто это первое что пришло в голову.
Вот вариант без использования массива:

<?php 
/**
 * Решение для задачи №4 из курса PHP
 * 
 * Вывести на экран n-ное число Фибоначчи.
 * UPD дайте альтернативное решение без массива.
 */

  $iteration = 8;
  
  echo getFibElem($iteration);

  function getFibElem($count, $first = 0, $second = 1) {
    $prev = $first;
    $current = $second;
    $next = 0;
    while ($count != 1) {
      $next = $prev + $current;
      $prev = $current;
      $current = $next;
      $count--;
    }
    return $current;
  }
?>
vedro-compota's picture

решение засчитано

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