一个数字有一个较小的除数吗?

时间:2017-12-13 04:38:41

标签: python recursion

我需要编写一个函数:has_divisor_smaller_than(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

1 个答案:

答案 0 :(得分:2)

代码应该有效。但你甚至可以进一步完善它。基本上,你不需要最后两个if-ifs。

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)

现在有两种方法可以处理smaller than条件:取(n,i)并使用i-1进行计算,如上所述或pass(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)