Python 一个数字有更小的除数吗?
我需要编写一个函数:Python 一个数字有更小的除数吗?,python,recursion,Python,Recursion,我需要编写一个函数:的除数小于(n,I)它检查n的除数是否小于I(!=1) 我需要在没有循环的情况下使用递归来实现这一点 这是我迄今为止所做的,但它不起作用: def has_divisor_smaller_than(n, i): if i == 1: return False elif n % i == 0: return True elif has_divisor_smaller_than(n, i - 1): retu
的除数小于(n,I)
它检查n的除数是否小于I(!=1)
我需要在没有循环的情况下使用递归来实现这一点
这是我迄今为止所做的,但它不起作用:
def has_divisor_smaller_than(n, i):
if i == 1:
return False
elif n % i == 0:
return True
elif has_divisor_smaller_than(n, i - 1):
return True
else:
return False
原样的代码应该可以工作。但你甚至可以进一步完善它。基本上,你不需要最后两个如果
def has_divisor_smaller_than(n, i):
if i-1 == 1:
return False
elif n % (i-1) == 0:
return True
return has_divisor_smaller_than(n, i - 1)
现在有两种方法可以处理小于
的情况,即取(n,i)并使用i-1进行上述计算,或者在下面声明的函数中通过(n,i-1)
def has_divisor_smaller_or_equal_to(n, i):
if i == 1:
return False
elif n % (i) == 0:
return True
return has_divisor_smaller_or equal_to(n, i)
您的程序?如果希望
的除数小于(10,2)
为False
(2不小于2),elif n%i==0:return True
无效,则此操作正常。例如,如果n=15,i=3,则返回True,但15的除数不小于3。是的,我希望(10,2)为false…这就是我无法计算的。。。。谢谢你的帮助!!嘿,非常感谢。。。但是我试着调用这个函数,但我不工作。例如(6,2)返回True。。。虽然我需要它返回False(1不算作除数)嗨,@Hadar我已经更新了答案。您发布的函数将检查小于或等于的除数。所以你需要在内部/外部做一个额外的-1,这就是我在答案中所做的。