BPS #8: Rekursiv zu Iterativ - Auswertung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Holzchopf

Meisterpacker

Betreff: BPS #8: Rekursiv zu Iterativ - Auswertung

BeitragSo, Mai 29, 2011 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt zeigt sich, wer in den Katakomben der Rekursion den Durchblick hatte!

Das war die Aufgabe

Postet hier eure Ergebnisse, Codes, Gedanken. Lernt von den anderen, seht euch deren Quelltext an und versucht euren eigenen zu verbessern.

Diskussion
Postet zu euren Codes stets eine kurze Erklärung mit euren Gedanken in denen ihr simpel gesagt die Frage "Wieso habe ich XY auf diese Art gelöst?" beantwortet. Beiträge, die nur den Code enthalten werden wir aus dem Thread entfernen.

Musterlösung:
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,0,2

Local i

Print "Die beiden Funktionen der 1. Aufgabe werden mit Werten von 0 bis 15 gefüttert"
Print "und das Ergebnis ausgegeben."
For i = 0 To 15
Print i + " func1_rekursiv: " + func1_rekursiv(i) + " func1_iterativ: " + func1_iterativ(i)
Next

Print "Die beiden Funktionen der 2. Aufgabe werden mit Werten von 0 bis 15 gefüttert"
Print "und das Ergebnis ausgegeben."
For i = 0 To 15
Print i + " fib_rekursiv: " + fib_rekursiv(i) + " fib_iterativ: " + fib_iterativ(i)
Next

WaitKey()

;Beispielfunktionen
Function bsp_rekursiv(n)
If n <= 0 Return 0
Return 1 + bsp_rekursiv(n - 1)
End Function

Function bsp_iterativ(n)
Local a,i
For i = 1 To n
a=a+1
Next
Return a
End Function

;Funktionen der 1. Aufgabe
Function func1_rekursiv(n)
If n = 0 Return n
Return n + func1_rekursiv(n - 1)
End Function

Function func1_iterativ(n)
Local a, i
For i = 1 To n
a=a+i
Next
Return a
End Function

;Funktionen der 2. Aufgabe
Function fib_rekursiv(x)
If x = 0 Return 0
If x = 1 Return 1
Return fib_rekursiv(x - 1) + fib_rekursiv(x - 2)
End Function

Function fib_iterativ(n)
Local a# = ((1 + Sqr(5)) / 2) ^ n
Local b# = ((1 - Sqr(5)) / 2) ^ n
Return (1 / Sqr(5)) * (a - b)
End Function
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
  • Zuletzt bearbeitet von Holzchopf am Di, Jun 14, 2011 19:47, insgesamt einmal bearbeitet

darth

BeitragSo, Mai 29, 2011 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

interessante Lösung der iterativen Fibonacci Folge. Aber sie benötigt Floats und wenns mir recht ist, gilt die Formel nur für grosse N. Es ginge auch einfacher (mit nur Integer), indem man es halt iterativ macht (-.-) und nicht nur eine Näherungsformel benutzt:

BlitzBasic: [AUSKLAPPEN]
Function fib_iterativ(n)
Local tmp

Local a = 1
Local b = 1

For i = 1 To n -1
tmp = a
a = a + b
b = tmp
Next

Return a
End Function


Die Fibonacci Folge baut sich ja daraus auf, dass man die vorigen zwei Zahlen jeweils zusammen addiert. Das kann man mit einer Schleife viel einfacher lösen als mit einer Wurzel :/ Aber vielleicht sehe nur ich das so.

MfG,
Darth
Diese Signatur ist leer.

mpmxyz

BeitragSo, Mai 29, 2011 12:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist keine Näherungsformel, sondern eine mathematisch 100% genaue Beschreibung:
http://de.wikipedia.org/wiki/F...ivre-Binet
(Den "induktiven Beweis" halte ich für den am Besten nachvollziehbaren. Wink)
Es könnte höchstens mit den Floats Probleme geben.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

darth

BeitragSo, Mai 29, 2011 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

hrm, scheinbar hast du recht. Ich hab mich getäuscht :O Ich ging einfach mal davon aus, dass die ganzen Wurzeln da drin am Ende irrationale Zahlen bilden. Aber scheinbar ist dem nicht so.
Ich habs wohl mit dem hier (selber Artikel, anderes Unterkapitel) verwechselt:
http://de.wikipedia.org/wiki/F...9Fe_Zahlen
My bad.

Von der Geschwindigkeit her weiss ich nicht vom Schiff aus was schneller ist, eine Iteration oder die ~drei Wurzeln. Müsste man mal testen, aber dazu bin ich zu faul.

MfG,
Darth
Diese Signatur ist leer.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group