# Javascript のコーディング質問
Javascriptにて
あなたは現在価格mドルの土地の購入するために、年利i(0 < i < 100)%の金融商品にpドル投資しました。何年後に土地の購入ができるでしょうか?howLongToReachFundGoalという関数を再帰によって作成してください。なお、毎年得られた利益は同商品に再投資するとし、土地の価格は経過する年数が偶数(0を含む)の時は2%、奇数の時は3%上昇します。また、人の寿命は80歳未満と仮定し、80年以上かかる時は80としてください。
という内容の元プログラムを組んでいます。
問題に直面しているのですが、一定数の入力だと正解の出力より1多い数値を出してしまうのですが、改善方法がわからず行き詰まってしまっています。
(例)
入力:5421,10421,5
正解の出力:27
自分の出力:28
どなたか分かる方手助けお願いします。
function howLongToReachFundGoalHelper(capitalMoney, goalMoney, interest, x){
function capitalAfterInterest(capitalMoney, interest, x){
if(x == 0){
return capitalMoney;
} else {
return capitalMoney * (1 + (interest / 100));
}
}
function goalMoneyAfterInflation(goalMoney, x){
if((x % 2 == 0) || (x == 0)){
return goalMoney * 1.02;
} else {
return goalMoney * 1.03;
}
}
if(x >= 80){
return 80;
} else if(capitalMoney >= goalMoney){
return x;
} else {
return howLongToReachFundGoalHelper(capitalAfterInterest(capitalMoney, interest, x + 1), goalMoneyAfterInflation(goalMoney, x + 1), interest, x + 1);
}
}
function howLongToReachFundGoal(capitalMoney,goalMoney,interest){
//ここから書きましょう
return howLongToReachFundGoalHelper(capitalMoney, goalMoney, interest, 0);
}