我必須將其重寫爲一個遞歸函數,並且我不明白我在做什麼錯誤。我搜索並搜索了很多不同的方式,這使得它更加令人困惑。遞歸複利興趣
float Total(float ir=0, int time=0)//Savings Procedure
{
float bal = Balance;
for (short i = 0; i < time; i++)
{
bal += (Balance*((1.0+ir)/time))/100;
}
return bal;
};
我嘗試:
float compoundit(float balance, float ir, int time)
{
if (time < 0)
{
return balance;
}
balance = balance * ((1.0 + ir)/time);
return compoundit(balance, ir, --time);
}
float TotalRecursive(float ir=0, int time=0)
{
return compoundit(Balance, ir, time);
};
難道我還差得遠?有時我會因此而得到'inf'。任何幫助,將不勝感激。
一個錯誤,我看到的是你會最終除以零,因爲你停止遞歸不是'時間'是零但是當它小於零。 –
這解釋了inf的結果,我將它從1改爲了只是爲了看看是否會有不同的結果。謝謝。任何人都可以解釋爲什麼我的結果如此遙遠? –