在DELPHI中如何计算A的N次方?(200分)

  • 主题发起人 主题发起人 luohongchu
  • 开始时间 开始时间
L

luohongchu

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在DELPHI中怎样表达求一个数的N次方(N可能为小数?如求10的2.4次方如何用PASCAL语言表述?
 
X^y=Exp(y*ln(X));
 
就是 exp(2.4*ln(10));
 
function
for i:=1 n do
x:=x*s
 
to 房客:

N可能为小数,所以还是用我的方法
 
G:wjiachun
 
200??不值得!
 
给他们总共50分,我要150,我的最标准:

uses Math;

function Power(Base, Exponent: Extended): Extended;
 
如果是整数还可以

function IntPower(Base: Extended; Exponent: Integer): Extended register;
 
应该不值200,wjiachun的是标准答案
 
呵,,跟我一样菜(两个月前)
 
wjiachun用了2个函数转折而来,我的一个函数搞定,为什么他的标准?
 
因为他说 N可能为小数
~~~~~~
 
不一定好,IntPower 是用汇编一个一个乘起来的 (fmul)
那两个合起来也有可能快。
 
用 Power 和 IntPower
 
; 来迟了,分数都被你们给拐了,luohongchu,分点给我好吗?
 
我来"调解"一下吧:

看看math.pas就知道在小数的情况下,
power=exp(exponent*ln(base)),
此时Pipi的答案与wjiachun没有什么不同,
大家可能误认为power()只支持整数,
所以认为wjiachun的方法更好,实际上没区别。

在整数的情况下,显然Pipi的答案好一些,
因为delphi的power()会判断,如果为整数,
自动调用intpower。试想,如果在整数的情况下exp(x*ln)
比intpower好,Delphi会这样傻吗?

因此,SuperMMX的说法也不能成立,因为你不知道ln的
过程,怎么能认为exp比intpower好呢?
实际上ln的算法远要比intpower复杂的多,肯定更耗时的。

另外,intpower的算法大家应该看看,
实际上就是我们平时计算整数幂的递归法,
因此效率是很高的,不是“一个一个乘起来的 ”。
 
同意“温柔一刀”的看法!
 
“温柔一刀”的看法有见地
 
时间太久,强制结束。 wjiachun
 
后退
顶部