【发布时间】:2015-12-10 20:32:59
【问题描述】:
我们的目标是使用递归计算大数提升到其他大数,例如,100 位数字提升到另一个 100 位数字。
我的计划是递归计算 exp/2,其中 exp 是指数,并根据 exp 是偶数还是奇数进行额外计算。
我当前的代码是:
def power(y, x, n):
#Base Case
if x == 0:
return 1
#If d is even
if (x%2==0):
m = power(y, x//2, n)
#Print statment only used as check
print(x, m)
return m*m
#If d is odd
else:
m = y*power(y, x//2, n)
#Print statement only used as check
print(x, m)
return m*m
我遇到的问题是它进行了太多计算,我正在努力弄清楚如何解决它。例如,2^3 返回 64,2^4 返回 256,2^5 返回 1024,依此类推。它计算 m*m 的次数太多了。
注意:这是求解大数模的一部分。我正在严格测试我的代码的指数部分。
【问题讨论】:
-
您的缩进(至少在问题方面)不正确。
-
此外,太多是什么意思。请提供一个例子,并说明您认为哪些语句不应该出现......
-
哦,输入的时候一定没有意识到,谢谢!
-
@CommuSoft:除非你有很多字节的 RAM,否则 bignums 不会削减它。
-
@jboyda5,你不需要写这个函数。使用内置的
pow()。