Вот код:
function $fib ($in) {
if ($in==1) { return 0;}
elseif ($in==2) { return 1;}
elseif ($in==3) { return 1;}
else {
$a=1;
$b=1;
for ($i = 3; $i <= $in; $i++)
{
$res = $a + $b;
$a = $b;
$b = $res;
}
return $res;
}
}
echo " = ".$fib(5);
Всё проверил раз двадцать, вроде как всё правильно, но!
Вот в этой строчке:
function $fib ($in) {
оно мне выдаёт ошибку: syntax error, unexpected T_VARIABLE, expecting T_STRING
Я в тупике, помогите кому не лень пожалуйста!
Спустя 8 минут, 41 секунда (20.10.2010 - 15:28) Michael написал(а):
function fib
- убери знак доллара из названия функции
Спустя 1 минута, 39 секунд (20.10.2010 - 15:30) Posia написал(а):
Спасибо тебе огромное, добрый человек!
Спустя 8 минут, 28 секунд (20.10.2010 - 15:38) Michael написал(а):
Кстати насчет ряда Фибоначчи: подумай как это сделать по другому, чем ты делаешь - через рекурсию.
Спустя 14 минут, 55 секунд (20.10.2010 - 15:53) Posia написал(а):
Спасибо за задачку, я как раз разбираюсь с ООП и с php в частности, обещаю подумать : )
Спустя 1 день, 19 часов, 12 минут, 6 секунд (22.10.2010 - 11:05) Posia написал(а):
Сдаюсь, как это сделать при помощи рекурсии? У меня получилось вот что, но оно не работает =(
function fib ($in) {
if ($in==1) { return 0;}
elseif ($in==2) { return 1;}
elseif ($in==3) { return 1;}
else {return $res = fib1 ($in, 1, 1);}
}
function fib1 ($n, $s, $p) {
if ($n<=1) {return $r; }
else {$r=fib1 ($n-l, $s=$s+$p, $a=$s );}
}
echo " = ".$q=fib (5);
Спустя 5 минут, 23 секунды (22.10.2010 - 11:10) Michael написал(а):
Там должно быть что то вроде:
function fib($n) {
if ($n == 1) return 0;
elseif ($n == 2) return 1;
else return fib($n-1) + fib($n-2);
}
Спустя 8 минут, 39 секунд (22.10.2010 - 11:19) Posia написал(а):
Здорово, но где я ошибся в своём коде?
Спустя 9 минут, 44 секунды (22.10.2010 - 11:29) Michael написал(а):
Цитата (Posia @ 22.10.2010 - 10:19) |
Здорово, но где я ошибся в своём коде? |
ты не делаешь return $r; в else ветке if-а