<script>
function factorial(x)
{
var result = 1;
while (x > 1) result *= x--;
return result;
}
alert(factorial(5));
</script>
пример факториала
честно, полноту вашей задачи я до сих пор не понял
хотите избавится от рекурсии используйте циклы
конструктор служит для иницииализации
"И какой подход к реализации был бы правильным?"
тот, который понятен другим разработчикам. Чтобы они не ломали голову в раскручивани вызовов ваши функций. Код должен быть
простым и понятым