将递归转换为迭代代码

apo*_*o90 0 c# recursive-query

我想将递归代码"转换"为迭代代码.例子是:

 public int CalcTime(double AnnualIncome, int Time, double Value)
 {
     if (AnnualIncome / 12 > Value / Time) 
         return Time;
     else
         return CalcTime(AnnualIncome, Time + 1, Value);
 }
Run Code Online (Sandbox Code Playgroud)

我试过但不能......

非常感谢你!

Joh*_*van 6

试试这个:

public int CalcTime(double AnnualIncome, int Time, double Value)
{
    while (AnnualIncome / 12 <= Value / Time) 
    {
        Time++;
    }
    return Time;
}
Run Code Online (Sandbox Code Playgroud)

同样@CodesInChaos在上面的注释中指出,最佳实践指示小写变量名称:

public int CalcTime(double annualIncome, int time, double value)
{
    while (annualIncome / 12 <= value / time) 
    {
        time++;
    }
    return time;
}
Run Code Online (Sandbox Code Playgroud)