7

O(1)複雑さと前処理でn番目のフィボナッチ数を計算したいO(n_max)

そのためには、次の C++ コードのように、以前に計算された値を保存する必要があります。

#include<vector>
using namespace std;
vector<int> cache;
int fibonacci(int n)
{
    if(n<=0)
        return 0;
    if(cache.size()>n-1)
        return cache[n-1];
    int res;
    if(n<=2)
        res=1;
    else
        res=fibonacci(n-1)+fibonacci(n-2);
    cache.push_back(res);
    return res;
}

しかし、Elm では許可されていない副作用に依存しています。

4

1 に答える 1