Я пытаюсь понять, что такое время выполнения, а также сложность пространства для этого алгоритма динамического программирования. Этот алгоритм возвращает общее количество изменений, которые могут создать число 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];
}