【发布时间】:2019-08-16 05:02:12
【问题描述】:
我写了一个小递归函数,用来测试 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
有没有更简洁的方式来编写这个函数?另外,让函数以这种方式返回自己是否合适?到目前为止我所看到的递归函数似乎并没有返回自己,而是他们只是调用自己并返回其他东西。谢谢
【问题讨论】:
-
该函数不是“返回自身”——它返回的是“评估自身的结果”——当然,这正是递归的含义! (当然,在不同的论点上,否则递归将永远不会结束。)
-
基本情况可能更基本:如果
a == b,您仍然可以将a除以b得到1,从而递归调用is_power(1, b)。 (除 0 的 0 次方之外的任何值都是 1。)
标签: python python-2.7 function