Autor Zpráva
Zorb
Profil *
Nevíte někdo jak to udělat?Konkrétně mám na mysli vypočítání n-tého členu řady pomocí vzorce F(n) = F(n-1) + F(n−2)
jogurt
Profil
Napsal sem nejakou rekurzivni funkci, ale nezkousel sem to, napis jestli to funguje...
function fibonacci($n){

return !$n ? 1 : ($n==1 ? 2 : fibonacci($n-1) + fibonacci($n-2));
}


*oprava: mel sem to blbe, tak sem to opravil, ted to funguje.
xixli
Profil
Na toto by sa hodilo cachovanie; dosť by sa to tým zrýchlilo
skús si dať fibonacci(50);
xixli
Profil
môj malý skriptík

<?php
class fibonacci
{
private $knownValues=array(0=>1, 1=>2);

public function calculate($n){
if(isset($this->knownValues[$n])) {
return $this->knownValues[$n];
}

$this->knownValues[$n]=($this->calculate($n-1) + $this->calculate($n-2));
return $this->knownValues[$n];
}
}

$fibonacci=new fibonacci;
echo $fibonacci->calculate(50);
?>

a pre fib(50) to ide ako po masle
jogurt
Profil
taky sem si rikal, ze by se hodilo, aby si to pamatoval, ale cachovani neovladam.
U toho mojeho sem zkousel fibonacci(100) a neveslo se to do casovyho limitu :-\
xixli
Profil
napadlo ma, že ak by ti to nefungovalo (nemáš php5) tak použi toto:

class fibonacci
{
var $knownValues=array(0=>1, 1=>2);

function calculate($n){
if(isset($this->knownValues[$n])) {
return $this->knownValues[$n];
}

$this->knownValues[$n]=($this->calculate($n-1) + $this->calculate($n-2));
return $this->knownValues[$n];
}
}

$fibonacci=new fibonacci;
echo $fibonacci->calculate(50);
?>
Toto téma je uzamčeno. Odpověď nelze zaslat.

0