Задача Фибоначчи № 2 из проекта Эйлера с PHP - PullRequest
0 голосов
/ 09 июня 2011

Вопрос звучит так:

Каждый новый термин в последовательности Фибоначчи генерируется путем добавления двух предыдущих терминов. К> начиная с 1 и 2, первые 10 слагаемых будут:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Рассматривая слагаемые в последовательности Фибоначчи, значения которых не превышают четырех миллионов,> найдите сумму четнозначных слагаемых.

И это то, что я написал в PHP

<?php
function fibo($first, $second, $limit){
  $next = $first + $second;
  if ($next % 2 ==0) {
    $array[]= "$next";
  }

  do 
  { 
    fibo($second,$next, $limit);
  } while ($next < $limit);

  $sum=array_sum($array[]);
  echo "$sum";
}
fibo(1,2,4000000);
?>

Мой код не работает, хотя ... кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 09 июня 2011

Попробуйте изменить $sum=array_sum($array[]); на $sum=array_sum($array); и посмотрите, что произойдет ...

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

Если по какой-либо причине нет сообщений об , попробуйте включить их .

РЕДАКТИРОВАТЬ:
Я помню, что при рекурсивном решении некоторых проблем Эйлера у меня возникла проблема, когда страница зависала. Это может произойти из-за некоторых ограничений рекурсии .Я считаю, что это похоже на вашу проблему.

1 голос
/ 09 июня 2011

Это простая проблема объема. Вы определяете $array в функции, вы не можете использовать его снаружи. Попробуйте использовать глобальный массив:

function fibo($first, $second, $limit) {
  //...
  $GLOBALS[array[]] = $next; 
}

Вы сможете использовать его снаружи.

...