-
26. 01. 2012, 18:15 #1Mitglied
- Registriert seit
- Feb 2008
- Beiträge
- 134
[Python] Crazy Function Rekursionsproblem
Guten Abend Leute,
ich habe ein Problem bei dem Crazy Functions von dem Project Euler (Problem 340.
Mein Code:
Spoiler:
PHP-Code:a,b,c = 27**7,7**21,12**7
def crazyfunction(n):
if n > b:
return n-c
else:
return crazyfunction(a+crazyfunction(a+crazyfunction(a+crazyfunction(a+n))))
def S(a,b,c):
summe,i = 0,0
while i <= b:
summe += crazyfunction(i)
i+=1
return summe
print S(a,b,c)
Die Beispiel Werte kann ich damit berechnen, aber wenn ich die "erweiterten Werte" nehme fliegt mir das Ding um die Ohren, weil
die Funktion zu oft aufgerufen wird, d.h. die Rekursionstiefe zu hoch ist.
Hat eventuell jemand einen Hinweis wie ich dies umgehen könnte, oder sollte ich dieses Problem in eine andere Sprache portieren, um das Ergebnis zu ermitteln?
-
26. 01. 2012, 21:01 #2
Re: [Python] Crazy Function Rekursionsproblem
Ich habe die Funktion jetzt nicht grossartig studiert. Eigentlich gar nicht.
Allgemein kann man Rekursionen normalerweise auch mit Schleifen lösen. Wobei man bei so tiefen gewollten Rekursionen sowieso den Sinn hinterfragen darf. Schlechter Algorithmus? Grober Fehler? Wobei der Name "Crazy Function" doch eher auf was witziges Sinnloses schliessen lässt
mfG
-
26. 01. 2012, 23:52 #3
Re: [Python] Crazy Function Rekursionsproblem
Wenn das Problem duch simples abtippen des Algorithmus in einer beliebigen Programmiersprache lösbar ware, dann wäre es nicht bei Project Euler
Die meisten Programmiersprachen werden damit Probleme haben. Außerdem laufen die Zahlen wie so oft wohl über den Bereich eines int hinaus. (welchen datentyp verwendet denn python? kommt das mit großen Zahlen klar oder nicht?) Eventuell könnte eine funktionale Sprache wie Haskell da weiterkommen, aber das ist auch nur eine Idee, muss nicht klappen.
Der Trick ist wahrscheinlich irgend eine geschickte Umformung der Aufgabe, die das gleiche Ergebnis liefert, aber keine Rekursion benötigt, oder zumindest keine so Tiefe.
-
27. 01. 2012, 08:15 #4Mitglied
(Threadstarter)
- Registriert seit
- Feb 2008
- Beiträge
- 134
Re: [Python] Crazy Function Rekursionsproblem
Ich werde dies heute mal unter Haskel testen und mal schaun ob es dort eventuell, mit diesem ersten Versuch klappt.
Python hat soweit kein Problem mit großen Zahlen und konnte deshalb schon viele Probleme von dem Projekt auf recht einfacher Art und Weise lösen.
Ansonsten grübel ich dann ein wenig bezüglich der Umformung dazu.
-
27. 01. 2012, 13:03 #5
Re: [Python] Crazy Function Rekursionsproblem
Ohne es mit Haskell getestet zu haben, crazyfunction ist nicht Tail rekursiv, also würde ich die gleichen Probleme wie mit Python erwarten.
-


Zitieren
mehr lesen...







Occupy Kiel: Massiver Sachschaden...
Heute, 20:15 in gulli:news