我想知道我是否可以在不实际使用log()
的情况下,根据一个数相对于一个基数(例如,对数基数2为16)来计算一个数的对数。我设法做到了,但我不相信它是非常有效的。
这是我用Python编写的代码:
def myLog(x,b):
exp=0
ans=b**exp
while x!=ans:
ans=b**exp
if ans==x:
return exp
exp=exp+1
所以我可以给它myLog(16,2)
,它应该返回4。确实如此,但是我相信这不是最有效的方法,所以我如何修复它并使我的代码更有效,不仅在这种情况下,而且在大多数情况下?
Tags:
如果有人给出了一个负值,比如myLog(-1,2),或者它是1 myLog(1,2),那么在循环之前计算ans,你知道它总是0,因为你把exp=0,然后在循环中再次计算它,而不必在更改exp之前
logarithmpython
尝试递归:
这是我的两分钱:
希望这有帮助
相关问题 更多 >
编程相关推荐