gpt4 book ai didi

ruby - 不使用默认运算符的 Ruby 中的指数公式

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:38 25 4
gpt4 key购买 nike

如何在不使用 ** 运算符的情况下使用方法来计算指数。假设方法名 calculate(a,b) 其中 a 是基数,b 是指数值。

ab的值可以是正负整数、小数等。

谢谢

最佳答案

Math.exp(b * Math.log(a))适合你的需要?请注意,虽然这适用于非整数 ab , 它需要 a > 0 .它还受到浮点运算的有限精度限制。


限制 b是整数,以下递归解决方案有效并且是 O(log b ),即渐近地比重复乘法快:

def calculate(a, b)
return 1.0 / calculate(a, -b) if b < 0
if b == 0
1
elsif b.even?
calculate(a * a, b / 2)
else
a * calculate(a, b - 1)
end
end

a 的值可以是整数或带小数,可以是正数也可以是负数。如果您担心精度问题,您也可以更改 return声明 return Rational(1, calculate(a, -b)) if b < 0 .

关于ruby - 不使用默认运算符的 Ruby 中的指数公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35016530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com