Python: rekursio ongelma

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Toni
Newcomer
Posts: 19
Joined: Tue May 20, 2008 8:49 pm

Python: rekursio ongelma

Post by Toni »

Tein pythonilla koodin mikä rekursion avulla lisää listaan kirjaimet a-z ja palauttaa sen, mutta jostain syystä palautettu lista onkin tyhjä. Koodi on seuraavanlainen:

Code: Select all

# -*- coding: cp1252 -*-

def alphabets(i = 97, result = []):
    if i == 123:
        return result
    elif i < 123:
        result.append(chr(i))
        i = i + 1
       alphabets(i, result)
        
print alphabets()

    
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: Python: rekursio ongelma

Post by tuhoojabotti »

Miksi ei samantien:

Code: Select all

map(chr, range(97, 123))
tai

Code: Select all

[chr(i) for i in xrange(ord('a'), ord('z')+1)]
En kyllä osaa sanoa miksi tuo ei toimi.

P.S. Ongelmat alueelle vain CB:hen liittyviä, muut Yleiseen, ellei ollut pythonille omaa topikkia yleisessä.
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Dande
Active Member
Posts: 193
Joined: Tue Aug 28, 2007 4:30 pm

Re: Python: rekursio ongelma

Post by Dande »

Toni wrote:Tein pythonilla koodin mikä rekursion avulla lisää listaan kirjaimet a-z ja palauttaa sen, mutta jostain syystä palautettu lista onkin tyhjä. Koodi on seuraavanlainen:
Johtuisiko siitä, että et palauta listaa kuin viimeisellä funktion kutsukerralla.

Code: Select all

# -*- coding: cp1252 -*-

def alphabets(i = 97, result = []):
    if i == 123:
        return result
    elif i < 123:
        result.append(chr(i))
        i = i + 1
        return alphabets(i, result) # huomaa lisätty return
        
print alphabets()

    
Muista myös palauttaa se lista, muulloinkin kuin vain viimeisellä kutsukerralla ;)
Post Reply