enter code here
如果不给出解决方案,有人可以帮助我理解如何表示此模式。我认为您需要检查N+1>;递归计算第n个值。因为这不是一个列表,我想我需要使用模和层划分来遍历列表。然而,由于只有两个return语句,我不知道如何递归调用函数并返回True和False
问题陈述: 孔号是一个数字,其中每一个其他数字都位于紧邻它的数字下方。例如,编号968将被视为孔编号,因为编号6小于其周围的两个数字。假设我们只传入具有奇数位数的数字。定义以下函数,以便正确标识孔号
def check_hole_number(n):
"""
>>> check_hole_number(123)
False
>>> check_hole_number(3241968)
True
>>> check_hole_number(3245968)
False
"""
if _________________________________________________________:
return _________________________________________________________
return ______________________________________________________________
我的解决方案:
def check_hole_number(n):
if n // 10 == 0:
return True
return (n % 10) > (n // 10 % 10) and (n // 10 % 10) < (n // 100 % 10) \
and check_hole_number(n // 100)
我已经实现了下面的一个示例,欢迎您查看以寻求帮助。如果您不想这样做,请遵循以下提示:
作为提示:
如果使用递归,则始终需要一个终止条件,否则,函数将无休止地调用自身,因此请考虑哪些输入不应用于再次调用函数。如果使用此输入调用函数(通过递归调用),只需返回一个值,一个布尔值,不要再次调用该函数
您已经找到了定义递归新函数调用的正确方法,但是作为新输入的真的是n[1:]吗?再想一想,并用一个例子手动完成该函数
什么时候需要另一个函数调用?或者换句话说:什么时候可以确定输入
n
不是孔号?设置此条件并根据条件是真还是假设置函数调用一般提示:
int
类型的变量在Python中是不可下标的,因此您必须始终将数字转换为str
,即字符串表示形式!!扰流板;-)! 示例实现(仅在以下假设下有效:
inputNumber mod 2 != 0
) 可以在这里找到: https://www.codepile.net/raw/NpoRbalV.py模式将类似于:
您必须在每个步骤中检查当前编号的前3位数字:
if
语句中)前3个数字是否符合hole number
条件如果前3位符合
hole number
条件,则检查当前步骤中是否有最后3
位:True
(您已经检查了所有剩余的数字,现在您确定数字是hole number
)如果当前前3位不是
hole number
,则应返回False
此外,您还可以检查当前步骤的最后3位数字:
相关问题 更多 >
编程相关推荐