2016-07-07 3 views
-2

Я пытаюсь закодировать упражнение 13 леди. Вы должны вычислять с помощью fibonacci, чтобы определить, как вы можете подняться по лестнице, когда вы можете сделать 1 или 2 ступени в то время.номера фибоначчи начинаются 0, 1, 2, 3, 5 для вариантов 2, но как я начинаю для варианта 3 или 4

Я сделал петлю, создавая первые 50 чисел Фибоначчи, как это:

$total = 50; 
$fibonacci[0]=0; 
$fibonacci[1]=1; 
for($i=2;$i<=$total;$i++){ 
    $fibonacci[$i] = $fibonacci[($i-1)] + $fibonacci[($i-2)]; 
} 

Это хорошо работает, если вы можете сделать 1 или 2 ступени в то время.

Но как мне настроить этот цикл, чтобы дать мне первые 50 номеров фибоначчи, если вы можете взять 1, 2 или 3 ступени в то время.

, если вы можете взять 1 или 2 ступени вы используете: Fx = F[(x-1)] + F[(x-2)];

если вы можете сделать 1, 2 и 3 вы используете: Fx = F[(x-1)] + F[(x-2)] + F[(x-3)];

если вы можете сделать 1, 2, 3 и 4 вы используете : Fx = F[(x-1)] + F[(x-2)] + F[(x-3)] + F[(x-4)];

Тогда вы можете сделать столько чисел или вычислить столько чисел, сколько пожелаете. Но вам всегда понадобятся первые несколько чисел, которые смогут выполнить вычисления.

Я надеюсь, что эта таблица ясно, что я имею в виду:

2 3 4 5 6 
1 1 1 1 1 1 
2 2 2 2 2 2 
3 3 4 4 4 4 
4 5 7 8 8 8 
5 8 13 15 16 16 
6 13 24 29 31 32 

В строке ниже 2 является основным Фибоначи

Ниже 3 мне нужно число от 1 до 3, чтобы иметь возможность рассчитать # 4 и так далее

Ниже 4 я нужен первый 4, чтобы иметь возможность известково # 5 и так далее

Может кто-нибудь помочь мне создать цикл, чтобы создать первый, скажем, 10 номеров для строки 4 d 5 и 6?

Благодаря

+3

Хм ... Я прочитал ваш вопрос 2 раза, и все же я не получу вас –

+0

, если вы проверите таблицу, первая строка числа - это последовательность фибоначчи, с которой вы можете начать с 0,1, а затем вычислить другие числа, используя f [(x-1)} = f [(x-2)]. –

+0

, который дает вам базовый 1,2,3,5,8 .... –

ответ

0

Здесь вы функция возвращает часть чисел Фибоначчи. Вы можете установить начальный элемент (на основе 0) и сколько элементов вам нужно.

function takeFibonacci($start, $length) 
{ 
    $fibonacci = array(0, 1); 
    $result = array(); 

    $position = 0; 
    do { 
     if (!isset($fibonacci[$position])) { 
      $fibonacci[$position] = $fibonacci[$position - 1] + $fibonacci[$position - 2];  
     } 

     if ($position >= $start) { 
      $result[] = $fibonacci[$position]; 
     } 

     $position++; 
    } while ($position < $start + $length); 

    return $result; 
} 

$fib = takeFibonacci(5, 5); 
var_dump($fib); 

Код выше возвращает этот результат

массива (5) {[0] => INT (5) [1] => Int (8) [2] => INT (13) [3] => int (21) [4] => int (34)}

 Смежные вопросы

  • Нет связанных вопросов^_^