Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Potenzberechnung mit Hilfe einer Rekursion (https://www.delphipraxis.net/141293-potenzberechnung-mit-hilfe-einer-rekursion.html)

Xbe 6. Okt 2009 17:03

Re: Potenzberechnung mit Hilfe einer Rekursion
 
@ Wolfgang

Soweit hab ich das jetzt auch verstanden, aber ich steuper immer noch über die Bedingung Rekursion(Wiederholung durch Selbstaufruf eines Algorithmus).

Wahrscheinlich iset zu einfach um das ichs umsetzen kann...

Mithrandir 6. Okt 2009 17:04

Re: Potenzberechnung mit Hilfe einer Rekursion
 
Zitat:

Zitat von Xbe
Soweit hab ich das jetzt auch verstanden, aber ich steuper immer noch über die Bedingung Rekursion(Wiederholung durch Selbstaufruf eines Algorithmus).

Tut mir Leid,

aber ich versteh nicht, was du uns sagen willst... :gruebel:

Xbe 6. Okt 2009 17:16

Re: Potenzberechnung mit Hilfe einer Rekursion
 
@ Daniel G

hier mal nen Bsp für eine funktionierende Rekursion:

.
.
.
Delphi-Quellcode:
procedureTForm1.umkehren(Sender:TObject);
   var i,j:integer;
   prodedure umkehr(zeichen:char);
      begin
         i:=i+1;
         zeichen:=wort[i];
         if i<length(wort) then umkehr(wort[i]);
         stringgrid1.cells[j,0]:=zeichen;
         j=j+1;
      end;
   begin
      wort:=edit1.text;
      i:=0;
      j:=1;
      umkehr(wort[i]);
   end;
.
.
.

[edit=MrSpock]Code Tags eingefügt. Mfg, MrSpock[/edit]

Wolfgang Mix 6. Okt 2009 17:32

Re: Potenzberechnung mit Hilfe einer Rekursion
 
@Xbe
Delphi-Quellcode:
function Potenz(Basis, Exponent: Integer): Int64;
begin
  if Exponent = 0 then
    Exit
  else
    Result := Basis * Potenz(Basis, Exponent - 1);
end;
Was ist denn hier grundlegend anders?
Du kennst schon den Unterschied zwischen Procedure und Function?

Gruß

Wolfgang

Xbe 6. Okt 2009 17:59

Re: Potenzberechnung mit Hilfe einer Rekursion
 
@wolfgang
nee deshalb hab ich ja vorhin gefragt, weil wenn das der Kopf wäre ok aber weiterhin muss man ja zb die Variablen wie Exponent auch vorher bestimmen

Wolfgang Mix 6. Okt 2009 18:14

Re: Potenzberechnung mit Hilfe einer Rekursion
 
@Xbe

Ich habe den Code aus dem angegebenen Link einmal ausprobiert, hier der Quälkot:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function Potenz(Basis, Exponent: Integer): Int64;
begin
  if Exponent = 0 then result:=1
  else
    Result := Basis * Potenz(Basis, Exponent - 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=IntToStr(Potenz(2,3));
end;

end.
Funzt hier soweit

Gruß

Wolgang

gammatester 6. Okt 2009 22:43

Re: Potenzberechnung mit Hilfe einer Rekursion
 
Zitat:

Zitat von Wolfgang Mix
Funzt hier soweit

Gruß

Wolgang

Hier nicht, da Potenz(2,-1) einen Stackoverflow gibt. Besser
Delphi-Quellcode:
function Potenz(Basis, Exponent: Integer): Int64;
begin
  if Exponent<0 then Result := 0
  else if Exponent = 0 then Result := 1
  else Result := Basis * Potenz(Basis, Exponent-1);
end;
oder Basis und Exponent als cardinal deklarieren.

Gruß Gammatester

Aphton 7. Okt 2009 00:03

Re: Potenzberechnung mit Hilfe einer Rekursion
 
@Gammatester - Warum?

x^-y = 1/(x^y)

;)

Delphi-Quellcode:
function Power( Base, Exponent: Integer ): Double;
begin
  if Exponent < 0 then
    Result := 1 / Power( Base, Abs( Exponent ) )
  else
    case Exponent of
      0: Result := 1;
      1: Result := Base;
    else
      Result := Base * Power( Base, Exponent - 1 );
    end;
end;

Wolfgang Mix 7. Okt 2009 08:13

Re: Potenzberechnung mit Hilfe einer Rekursion
 
Perfekt, jetzt muss man nur noch 0 hoch 0 abfangen.

Gruß

Wolfgang

gammatester 7. Okt 2009 08:19

Re: Potenzberechnung mit Hilfe einer Rekursion
 
Zitat:

Zitat von Aphton
@Gammatester - Warum?

x^-y = 1/(x^y)

;)

Richtig. Und was ist 1/x^y für y>0,x>0? Für Integerwerte y>0, x>1 immer 0. Ich wollte in meinem Vorschlag nicht noch mehr Fallunterscheidungen einbringen. Es sollte aber spezifiziert werden, ob Integer oder Float gerechnet werden soll, und aus welchem Bereich die Argument kommen sollen.

Dein Vorschlag ändert unter der Hand die bisher diskutierte Funktionsdeklaration.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:39 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz