如果在范围内,则递归增加值

时间:2019-04-30 12:32:38

标签: c# model-view-controller

我确定这应该非常简单,但是我似乎无法使其正常工作。基本上,我想检查某个日期是在周末还是银行假期,如果确实如此,则在该日期上增加一天,然后再次检查,直到该日期不属于这两个日期之一,然后返回日期。所以我有:

    private static DateTime isBankHoliday(DateTime myDate)
    {

        if (DateSystem.IsPublicHoliday(myDate, CountryCode.GB) || DateSystem.IsWeekend(myDate, CountryCode.GB))
        {
            isBankHoliday(myDate.AddDays(1));
        }
        else
        {
            return myDate;
        }

        return myDate;
    }

我将此函数称为

var myNewDate = isBankHoliday(date);

例如,说我在2019年5月5日(星期日)通过了例行检查,然后在日期上增加了一天,因此变成了6号,然后再次检查,但是沿此日期的某个地方日期又返回并再次返回5号

很明显,我在某个地方犯了一些基本错误,但是看不到有人可以帮忙吗?

请注意,我正在使用Nagar日期库。

谢谢, C

2 个答案:

答案 0 :(得分:3)

您在return语句中缺少if,并且在函数末尾您得到了错误的return语句。应该是:

private static DateTime isBankHoliday(DateTime myDate)
{

    if (DateSystem.IsPublicHoliday(myDate, CountryCode.GB) || DateSystem.IsWeekend(myDate, CountryCode.GB))
    {
        return isBankHoliday(myDate.AddDays(1));
    }
    else
    {
        return myDate;
    }
}

答案 1 :(得分:2)

递归执行对您来说重要吗?您可以使用while循环更简单地做到这一点:

 私有静态DateTime isBankHoliday(DateTime myDate)
{
    而(DateSystem.IsPublicHoliday(myDate,CountryCode.GB)
            || DateSystem.IsWeekend(myDate,CountryCode.GB))
    {
        myDate = myDate.AddDays(1);
    }

    返回myDate;
}