Ho creato una funzione memoized della versione ricorsiva di Fibonacci. Lo uso come esempio per altri tipi di funzioni che utilizzerebbero la memoizzazione. mia implementazione è male perché se includo in una libreria, che significa che la variabile global
è ancora visto ..Memoizing funzione fibonacci in php
Questo è l'originale ricorsiva funzione di Fibonacci:
function fibonacci($n) {
if($n > 1) {
return fibonacci($n-1) + fibonacci($n-2);
}
return $n;
}
e ho modificato per un versione memoized:
$memo = array();
function fibonacciMemo($n) {
global $memo;
if(array_key_exists($n, $memo)) {
return $memo[$n];
}
else {
if($n > 1) {
$result = fibonacciMemo($n-1) + fibonacciMemo($n-2);
$memo[$n] = $result;
return $result;
}
return $n;
}
}
ho volutamente non ha utilizzato il metodo iterativo nell'attuazione Fibonacci. C'è qualche modo migliore per memorizzare la funzione Fibonacci in PHP? Puoi suggerirmi miglioramenti migliori? Ho visto func_get_args()
e call_user_func_array
come un altro modo, ma non riesco a capire cosa è meglio?
Quindi la mia domanda principale è: Come posso memorizzare correttamente la funzione Fibonacci in PHP? o Qual è il modo migliore per memorizzare la funzione Fibonacci in PHP?
passando '$ memo 'come parametro di' fibonacciMemo'? anche se è molto meno elegante :( –
beh, penso che sia anche possibile, ma quello che sto cercando è la migliore implementazione finora per questa funzione .. :) – catzilla
Dai un'occhiata a [memoized] (https: // github .com/ihor/Nspl # memoizedfunction) funzione da [Nspl] (https: // github.com/ihor/Nspl) –