Рекурсивные функции и добавление/расширение списков

Это очень простой код вместо большой проблемы, но я надеюсь, что смогу решить ее по частям. Начну с моей первой проблемы.

def testrecurse(z,target):
    x=[]
    if z<target:
        z*=2
        x.append(z)
        x.extend(testrecurse(z,target))
    return x

Это тестовая функция, чтобы помочь моему мозгу с рекурсией. Он принимает число, затем показывает все умножения двух, пока не достигнет целевого числа. поэтому, если я ввожу:

testrecurse(1,1000)

я получаю:

[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

и это здорово! Выход выглядит хорошо и чисто. Но вот моя проблема, мне трудно добавить или добавить это самое первое значение в моем выводе. Вот как я хочу, чтобы результат выглядел.

[1,2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]

Я пытался изменить

x=[] to x=[z]

, но потом получаю:

[1, 2, 2, 4, 4, 8, 8, 16, 16, 32, 32, 64, 64, 128, 128, 256, 256, 512, 512, 1024, 1024]

любая помощь приветствуется, я новичок в рекурсии, и у меня болит голова.

5
задан phimuemue 27 March 2012 в 20:26
поделиться