DEV Community

Discussion on: Memoization in PHP

Collapse
 
lito profile image
Lito • Edited

You don't have to use an external variable for cache, you can use a static variable from the method:

function fibonacci(int $n): int
{
    static $cache = [];

    if (isset($cache[$n])) {
        return $cache[$n];
    }

    if (($n === 0) || ($n === 1)) {
        return $cache[$n] = $n;
    }

    return $cache[$n] = intval(fibonacci($n - 1) + fibonacci($n - 2));
}

for ($i = 0; $i < 80; $i++) {
    echo fibonacci($i).' ';
}
Enter fullscreen mode Exit fullscreen mode