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,这就是我在答案中所做的。