Ergebnis 1 bis 5 von 5
  1. #1
    Mitglied
    Registriert seit
    Feb 2008
    Beiträge
    134

    Standard [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,27**7,7**21,12**7
    def crazyfunction
    (n):    
        if 
    b:
            return 
    n-c
        
    else:
            return 
    crazyfunction(a+crazyfunction(a+crazyfunction(a+crazyfunction(a+n))))

    def S(a,b,c):
        
    summe,0,0
        
    while <= 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?

  2. #2
    #-e^(i*pi) Avatar von toredo
    Registriert seit
    Sep 2006
    Beiträge
    802

    Standard 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

  3. #3
    Wahnsinnige Backware Avatar von stefbrot
    Registriert seit
    May 2006
    Ort
    An meinem PC
    Beiträge
    2.490

    Standard 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.

  4. #4
    Mitglied

    (Threadstarter)


    Registriert seit
    Feb 2008
    Beiträge
    134

    Standard 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.

  5. #5
    \o/ Avatar von sumisumi
    Registriert seit
    Jan 2008
    Beiträge
    4.039

    Standard 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.

  6.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •