首页 > 解决方案 > 我将如何在这段代码中实现递归?

问题描述

我需要帮助。有人可以告诉我这些代码行将如何递归实现吗?

我没有完全理解递归的含义。

def nextDay(year, month, day):
    """Simple version: assume every month has 30 days"""
    if day < 30:
        return year, month, day + 1
    else:
        if month == 12:
            return year + 1, 1, 1
        else:
            return year, month + 1, 1

def daysBetweenDates(year1, month1, day1, year2, month2, day2):
    counter = 0
    while not (year1==year2 and month1==month2 and day1==day2):
        year1,month1,day1 = nextDay(year1,month1,day1)
        counter += 1
    return counter

标签: pythonrecursion

解决方案


def nextDay(year, month, day):
    """Simple version: assume every month has 30 days"""
    if day < 30:
        return year, month, day + 1
    else:
        if month == 12:
            return year + 1, 1, 1
        else:
            return year, month + 1, 1
'''
Assumption is that date1 is less than date2
'''
def daysBetweenDates(year1, month1, day1, year2, month2, day2):
   if year1==year2 and month1==month2 and day1==day2: # base condition
      return 0
   else:
      y, m, d = nextDay(year1, month1, day1)
      return dateBetweenDates(y, m, d, year2, month2, day2) + 1 # check for difference between new date and final date recursively

解释:

正如评论中所指出的,递归函数是一个调用自身的函数。

通常我们通过检查基本条件来利用这种技术。直到基本条件没有得到满足,我们才会朝着有可能得到答案的方向努力。

在您的情况下,我们首先检查日期是否相等,如果是,则意味着我们已经到达末尾,如果不是,我们只需增加当前日期值(使用 nextDay 函数)并调用相同的函数来检查新日期之间的差异和最后日期。


推荐阅读