2015-08-26 5 views
1

Пожалуйста, нужна помощь! Я пытаюсь сделать небольшой JS компаундирования калькуляторРекурсивная функция javascript возвращает начальное значение

function calculateCompound(amount, earning, remains, roi, compound) { 
    if (remains > 0) { 
     var ini_earning = earning; 
     var accrual = amount * roi; 
     earning = accrual * (1 - compound); 
     var new_amount = amount + accrual - earning; 
     var new_earning = ini_earning + earning; 
     remains--; 
     calculateCompound(new_amount, new_earning, remains, roi, compound); 
    } 
    return earning + amount; 
} 

calculateCompound(100, 0, 5, .1, .5); 

, но после 5 звонков возвращает начальные значения (105 в данном случае)

Большое спасибо заранее!

+0

спасибо за форматирование кода, я довольно новыми для SO – peyeruni

+0

Что такое ожидаемое значение? Я не знаком с вычислением соединения – axelduch

+0

Не хватает ли 'return' перед внутренним' calculateCompound (...) '? – jfriend00

ответ

2

Вы никогда не возвращаете значение из своего рекурсивного вызова, поэтому оно возвращает начальное значение.

Идея заключается в том, чтобы иметь базовый случай, который возвращает earning + amount и повторялись, возвращая значению calculateCompound называем

function calculateCompound(amount, earning, remains, roi, compound) { 
    if (remains <= 0) { 
     return earning + amount; 
    } 

    var ini_earning = earning; 
    var accrual = amount * roi; 
    earning = accrual * (1 - compound); 
    var new_amount = amount + accrual - earning; 
    var new_earning = ini_earning + earning; 

    return calculateCompound(new_amount, new_earning, remains - 1, roi, compound); 
} 
Смежные вопросы