Превратить рекурсию в цикл

Как превратить рекурсию (функция c) в цикл?

function c(i, count, tour){
    let result = 0;
    for (let j = i; j <= count; j+=i){
        if (tour-1) result+=c(j, count, tour-1);
        else result++;
    }
    return result;
}

var a = 6;
var b = 4;

console.log(c(1, a, b));

Ответы (1 шт):

Автор решения: Aziz Umarov

Дам наводку, рассписывать не стану. У вас рекусия целочисленная, т.е по факту вы пробегаетесь по 3х мерному массиву, собственно она и создает сложность в представлении поведении.

создаёте 3х мерный массив и заполняете в цикле по каждому измерению.

аналогия с факториалом у которого одно измерение f[0] = 1, f[1] = 1, ..... вы заполгяете массив до нужного вам.

→ Ссылка