0 Daumen
608 Aufrufe

Wenn f(x) die g(x) direkt referenziert 

-> bedeutet das, dass g(x) taucht irgendwo im Rumpf von f auf.


Wenn f(x) die g(x) referenziert 

-> bedeutet das, dass irgendwann im Rumpf irgendwo eine Funktion aufgerufen wird, die die Funktion g(x) aufruft


Nun meine Verständnisfrage:


f,g,h,z seien Funktionen 


f x= g (h (if x > 2 then x-3 else 50000000 ))

g x= if (z (x+2)) > 30 then h x else f x


Was ich nicht genau verstehe ist, dass in manchen Fällen bei der if else Anweisung manche Funktionen nicht aufgerufen werden. Gilt dann immer noch: es muss einfach irgendwo im Rumpf stehen. Oder kann ich diese Wenn-Dann Bedingungen außer Betracht lassen? 



Meine Ideen:

habe ich das richtig verstanden wenn ich sage, dass


f - {g,h} direkt referenziert

und 

f - {g,h,z,f} referenziert

und

f rekursiv ist

und 

f und g verschränkt rekursiv sind


Also alle diese Ergebnisse zu den obigen ersten Funktion so sagen kann?

Avatar von

1 Antwort

+1 Daumen

Das If und else gehört genau zur Funktion {Algorithmus; Rumpf} -> ist einfach nur ein anderer Syntax

denn für 

if y then return x

else return x*2

kann man auch eine einzige Funktion schreiben:

f(x,y) =(x*y)+x*2*(1-y) mit y ∈ {0,1} 

oder in php oder JavaScript:

f(x,y) = (y>0)?x:x*2;


Was nun manche Lehrer genau hören wollen, hängt vom Lehrer und dessen Definition ab.

Für mich ist die Geschwindigkeit des Algorithmus entscheidend, und nicht,

ob er nun "verschränkt rekursiv" genannt wird. 

Viele rekursive Algorithmen sind bei großen Argumenten extrem langsam und unübersichtlich!

Oft gibt es zu Rekursionen bereits fertige explizite Funktionen, die x mal schneller und direkter sind.

Avatar von 5,7 k

Vielen Dank für die rasche Beantwortung meiner Frage :)

Kannst du mir auch bzgl. den Funktionsreferenzen einen Tip geben? Ob die Funktion die anderen Funktionen referenziert oder auch rekursiv ist?

Die Funktion ist vom Skript abgeändert und soll mir nur zum Verständnis helfen.

Dankeschön

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community