Ich habe eine Memo-Funktion der rekursiven Version von Fibonacci erstellt. Ich verwende dies als ein Beispiel für andere Arten von Funktionen, die Memoization verwenden würde. Meine Umsetzung ist schlecht, da, wenn ich es in einer Bibliothek enthalten, bedeutet dies, dass die global
Variable noch ..Memo Fibonacci-Funktion in PHP
Dies ist die ursprüngliche rekursive Fibonacci-Funktion ist:
function fibonacci($n) {
if($n > 1) {
return fibonacci($n-1) + fibonacci($n-2);
}
return $n;
}
und ich modifiziert es ein memoized Version:
$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;
}
}
ich die iterative Methode verwenden Fibonacci bei der Umsetzung absichtlich nicht. Gibt es bessere Möglichkeiten, Fibonacci-Funktion in PHP Memo zu machen? Können Sie mir bessere Verbesserungen vorschlagen? Ich habe func_get_args()
und call_user_func_array
als eine andere Möglichkeit gesehen, aber ich kann nicht scheinen zu wissen, was besser ist?
Also meine Hauptfrage ist: Wie kann ich Fibonacci-Funktion in PHP ordnungsgemäß memo? oder Was ist der beste Weg für das Memoisieren der Fibonacci-Funktion in PHP?
vorbei '$ memo 'als Parameter von' fibonacciMemo'? obwohl es viel weniger elegant ist :( –
nun, ich denke, das ist auch möglich, aber was ich suche, ist die beste Implementierung für diese Funktion bisher ... :) – catzilla
Werfen Sie einen Blick auf [Memo] (https: // github Funktion von [Nspl] (https: // github.com/ihor/Nspl) –