Как время выполнения этого алгоритма O (n * a), где a - длина списка denom - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь понять, что такое время выполнения, а также сложность пространства для этого алгоритма динамического программирования. Этот алгоритм возвращает общее количество изменений, которые могут создать число n из списка конфессий. Например, если denom is [25] and n is 100 the result is 1 as 25 * 4 = 100. М - это объект памятки.

function f(n, denom, index,m,ad) {
    var str = index + "-" +n
    var val = denom[index]
    var ways = 0;
    if(m[str]){return m[str]}
    if(index > denom.length - 1 && n == 0) {return 1}
    for(var i = 0; i <= Math.floor(n/val); i++) {
        ways += f(n - (i * val), denom, index + 1,m,ad)
    }
    m[str] = ways
    return m[str];
}
...