使这段代码递归的最好方法是什么?
本文关键字:方法 是什么 递归 段代码 代码 | 更新日期: 2023-09-27 18:12:00
我必须编辑一些代码,其中包含一个拟议日期(作为一个名为minDate的DateTime对象)和一个失效日期数组。给定一个建议的日期,它尝试查看这是否有效(不是一个失效日期)。如果这是一个失效日期,那么继续检查第二天,直到你发现一个不是有效的结账日期。现有代码如下所示
if ( blackoutDates.Contains(minDate))
{
minDate = minDate.AddDays(1);
dateOffset = dateOffset + 1;
if ( blackoutDates.Contains(minDate))
{
minDate = minDate.AddDays(1);
dateOffset = dateOffset + 1;
if (blackoutDates.Contains(minDate))
{
minDate = minDate.AddDays(1);
dateOffset = dateOffset + 1;
}
}
}
显然这里有一个重复的模式,我试图找出最好的方法来清理这段代码,使其优雅
不需要递归。您可以在循环中执行此操作。
while(blackoutDates.Contains(minData)){
minData = minData.AddDays(1);
++dataOffset;
}
我不知道这是什么语言,但是检查一下是否已经有一个标准的API来做你首先需要的。
我不会让它递归。我将使它成为while
循环:
while(blackoutDates.Contains(minDate))
{
minDate = minDate.AddDays(1);
dateOffset = dateOffset + 1;
}
递归可以表示循环,但循环结构通常在其设计的上下文中使用时更清晰。它们还使访问循环作用域之外的数据比递归更简单(特别是局部变量)。