Python 我需要做一个递归函数power(x,n),它将x的结果提升到第9次方(xn)

Python 我需要做一个递归函数power(x,n),它将x的结果提升到第9次方(xn),python,function,recursion,Python,Function,Recursion,你快到了。现在,您的代码将计算如下表达式: x*(x-1)*(x-2)*(x-3)*。。。(不终止) 您需要做的是更改以下内容: def numPotencia(x, n): if isinstance(x,int) and isinstance(n,int): return aux_xPower(abs(x), abs(n)); else: print("\n""Error: The number needs to be a integ

你快到了。现在,您的代码将计算如下表达式:

x*(x-1)*(x-2)*(x-3)*。。。(不终止)
您需要做的是更改以下内容:

def numPotencia(x, n):
    if isinstance(x,int) and isinstance(n,int):
            return aux_xPower(abs(x), abs(n));
    else:
        print("\n""Error: The number needs to be a integer");


def aux_xPower(x,n):
    if n == 0:
        return 1;
    elif n == 1:
        return x;
    else:
        return x * aux_xPower(x-1,n)
为此:

return x * aux_xPower(x - 1, n)

这是必要的,因为
x^n=x*x^(n-1)
x^n=x*(x-1)^n
重写此行并重试

return x * aux_xPower(x, n - 1)

return x * aux_xPower(x-1,n)
你的基础每次都应该是一样的

return x * aux_xPower(x,n-1)
这行代码应该更正为

return x * aux_xPower(x-1,n) 

因为基础不应该改变。只有幂才能递归

你把
x
n
搞混了。那么到底是什么问题呢?n必须是整数和正的(以避免无限递归)。你确定你也需要x是int吗?elif n==1:返回x;对于加快程序速度没有帮助,因为当n>1时,它又包含一次检查(在一般情况下,它很容易变得悲观)。您可以通过此检查将其删除,代码看起来会更好。如果此答案回答了您的问题,您可以将其标记为正确答案。
return x * aux_xPower(x,n-1)