首页 > 解决方案 > 有没有更好的方法来编写这个递归函数?

问题描述

我写了一个小递归函数,用来测试 a 是否是 b 的幂。Think Python的完整练习是:

一个数 a 是 b 的幂,如果它可以被 b 整除并且 a/b 是 b 的幂。编写一个名为 is_power 的函数,它接受参数 a 和 b,如果 a 是 b 的幂,则返回 True。注意:您将不得不考虑基本情况。

def is_power(a, b):
    if a == b:
        return True
    elif a % b == 0:
        a = a/b
        return is_power(a, b)
    else:
        return False

有没有更简洁的方法可以编写这个函数?另外,让函数以这种方式返回自己是否合适?到目前为止,我所看到的递归函数似乎并没有返回自己,而是他们只是调用自己并返回其他东西。谢谢

标签: pythonpython-2.7function

解决方案


你可以在一行中做到这一点:

def is_power(a,b):
    return a == b or (a%b == 0 and is_power(a/b,b))

一般来说,返回TrueorFalse是对比较的响应比只返回比较本身更冗长。比较已经是布尔值。


推荐阅读