python - 递归求幂

标签 python recursion exponentiation

我正在尝试编写一个小程序来递归计算指数,但我有点卡住了。这是一项家庭作业,我们被要求有一个基本情况,当指数是奇数时,当指数是偶数时。到目前为止我有这个:

def quick_power(x,n):
    if n == 0:
        return 1
    elif n % 2 != 0:
        return x * quick_power(x, n-1)
    elif n % 2 == 0:
        return quick_power(quick_power(x, n//2), 2)

而且我知道 n % 2 == 0 的行不是它应该的样子。任何帮助表示赞赏。谢谢。

最佳答案

假设我们正在评估 quick_power(1234, 2)。评价是这样的:

  1. quick_power(1234, 2)
  2. quick_power(quick_power(1234, 1), 2)
  3. quick_power(1234 * Quick_power(1234, 0), 2)
  4. quick_power(1234 * 1, 2)
  5. quick_power(1234, 2)

…正如你所看到的,它最终开始评估我们开始的地方,所以你最终会得到无限递归。在不给你解决方案的情况下,我建议你思考:如果我们有一个常数指数(这里是 2),有没有一种方法可以计算它而不必递归地进行?

关于python - 递归求幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32031093/

相关文章:

c++ - 分而治之算法返回大小为 n 的数组 int a[] 中偶数项的总和

c - 棘手的递归函数007

c++ - 通过平方进行模幂运算的溢出可能性

algorithm - 为数字供电的时间复杂度

python - 有没有办法遍历两个字典中的所有键并更改所有重复的项目,以便字典的项目全部不同

用于用户输入的python库

python - 如何在 python 中的管道中结合 LabelBinarizer 和 OneHotEncoder 来处理分类变量?

sql - MySQL 递归查询

java - 函数 powRec(x,n-1) 如何执行求幂?

python - 无法使用 win32com 读取 'Outlook item' 对象作为附件