python - 我将如何在这段代码中实现递归?
问题描述
我需要帮助。有人可以告诉我这些代码行将如何递归实现吗?
我没有完全理解递归的含义。
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
解决方案
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 函数)并调用相同的函数来检查新日期之间的差异和最后日期。
推荐阅读
- c - 作业:C 编程中的数组拆分
- javascript - 我不能从一个类中运行一个函数
- tensorflow-federated - TensorFlow Federated 的大型数据集处理
- angular - Angular 6 兄弟路由(用于侧边栏)
- linux - 如何在 root 下对其他人隐藏服务器上的 PHP 代码?
- kotlin - 将 graphql 枚举映射到 kotlin 枚举
- python - 无法将工作簿加载到 openpyxl
- c - \n 不使用 strtok 替换
- python - 将 CSV 数据文件上传到 Pandas Dataframe 时如何分配标签和特征
- reactjs - 为什么 React Native Panresponder 中存在“偏移”?