Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi funktionen (https://www.delphipraxis.net/149150-funktionen.html)

xxsasch4xx 15. Mär 2010 15:30


funktionen
 
hallo habe in einer Woche eine theoretische Prüfung in der schule und es geht um Funktionen und Prozeduren
aber mir ist eine Zeile nicht ganz klar

also ich habe folgende Aufgabe:

Im edit feld 1 wird 6 eingetragen und im edit feld 2 wird eine 2 eingetragen. Welcher wert wird nach anklicken im labelfeld 1 ausgegeben?

Delphi-Quellcode:
button2.click

var a,b:integer;
begin
 a:=strtoint(edit1.text);
 b:=strtoint(edit2.text);
 if a>b then p (a,b); // true bei eingabe 6 und 2
 label1.caption:=inttostr(f2(a,b));

procedure p(var x,y:integer);
var h:integer;
begin
 h:=x;
 x:=y;
 y:=h;
end;
bis hierhin ist mir alles klar also bei der prozedure werden nun x und y vertauscht mit Hilfe von h

aber jetzt kommt meine Problem Zeile die ich nicht ganz verstehe im Fettdruck bei function 2

Delphi-Quellcode:
function f2(a,b:integer):integer;
begin
 if b=a then // nein 2 ist nicht gleich 6
 f2:=a
else
 f2:=f2(a,b-1)+b;
also a wird jetzt b -1 also dann 5 aber was hat es mit dem +b am ende noch aufsticht?

xxsasch4xx 15. Mär 2010 15:33

Re: funktionen
 
irgentwie geht der fettdruck nicht im delphi code

ich meinte diese zeile hier:

f2:=f2(a,b-1)+b;

Teekeks 15. Mär 2010 15:34

Re: funktionen
 
wie wäre es mit "5+6=11"?
Was war die Frage?

xxsasch4xx 15. Mär 2010 15:38

Re: funktionen
 
meine frage ist ja wie man auf den endwert in label 1 kommt ohne das programm auszutesten bei delphi

Uwe Raabe 15. Mär 2010 15:39

Re: funktionen
 
f2 ist eine rekursiv implementierte Funktion mit den zwei Parametern a und b, wobe a <= b sein muss. Der Rückgabewert der Funktion soll a sein, wenn a = b ist, anderfalls erhält man ihn durch addieren von b zu dem Rückgabewert von f2(a, b-1).

Für deinen Fall (a=2, b=6) ist das:

f2(2, 6) = f2(a, 5) + 6 = f2(2, 4) + 5 + 6 = f2(2, 3) + 4 + 5 + 6 = f2(2, 2) + 3 + 4 + 5 + 6 = 2 + 3 + 4 + 5 + 6 = 20

und nicht 11

dominikkv 15. Mär 2010 15:42

Re: funktionen
 
f2 ist eine rekursive Funktion, das heißt sie ruft sich selbst wieder auf. Auf das Ergebnis kommst du am besten, wenn du von hinten anfängst (dann, wenn die Funktion "abgebrochen" wird). Am besten schreibst du dir die Parameter und die Ergebnisse so auf:

Code:
A B result
2  6  ?
2  5  ?
2  4  9
2  3  5
2  2  2

Teekeks 15. Mär 2010 16:34

Re: funktionen
 
dann müsste die Funktion aber f2 heißen und nich 2 *verzweifelt nach einer ausrede such*

xxsasch4xx 15. Mär 2010 18:25

Re: funktionen
 
achso ja stimmt aber ich hatte schon F2 gemeint als name^^

Luckie 15. Mär 2010 19:46

Aussagekräftiger Titel
 
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichterst du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 Uhr.

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