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)