相关疑难解决方法(0)

有人可以为我解释这个递归吗?

我从leetcode获取此代码.

class Solution(object):
    def myPow(self, x, n):
         if n == 0: 
             return 1
         if n == -1: 
             return 1 / x
         return self.myPow(x * x, n / 2) * ([1, x][n % 2])
Run Code Online (Sandbox Code Playgroud)

此代码用于实现poe(x, n),这意味着x**n在Python中.

我想知道为什么它可以实现pow(x, n).

它看起来没有意义......

我明白

if n == 0: 
and
if n == -1:
Run Code Online (Sandbox Code Playgroud)

但核心代码:

self.myPow(x * x, n / 2) * ([1, x][n % 2])
Run Code Online (Sandbox Code Playgroud)

真的很难理解.

顺便说一句,这段代码仅适用于Python 2.7.如果你想在Python 3上进行测试,你应该改变

myPow(x*x, n / 2) * ([1, x][n % 2])
Run Code Online (Sandbox Code Playgroud)

至 …

python recursion python-2.x

6
推荐指数
1
解决办法
254
查看次数

标签 统计

python ×1

python-2.x ×1

recursion ×1