Wie kann ich eine Zahl potenzieren?


In Delphi gibt es keine Standardfunktion für eine Rechnung der Art 'x hoch y'. Hier sind zwei Versionen:

1. die einfache Methode:

Die folgende Funktion gilt nur für y>0, für sehr große Werte sollte man auf den Datentyp double ausweichen.

function Power(x,y : integer) : integer;
begin
  result := 1;
  for i := 1 to y do begin
    Result := Result*x;
  end;
end;

2. die elegante Methode:

Diese Funktion gilt nur für x>0.

function Power(x,y : double) : double;
begin
  result := exp(y * ln(x));
end;

3. und hier noch die Methode von Olivier Braun (auch nur für x>=0):

function schnell_pot(b,n:longint):longint;

  function quadrat(x:longint):longint;
  begin
    quadrat := x*x;
  end;

begin
  if n=0 then
    schnell_pot:=1
  else
    if (n>1) then
      if not(odd(n)) then
        result := quadrat(result(b,n div 2))
      else
        result := b*result(b,(n-1));
end;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ