To jest bardzo prosty kod w miejsce większego problemu, ale mam nadzieję, że poradzę sobie z nim w porcjach. Zacznę od mojego pierwszego problemu.Funkcje rekursywne i listy dołączające/rozszerzające
def testrecurse(z,target):
x=[]
if z<target:
z*=2
x.append(z)
x.extend(testrecurse(z,target))
return x
To jest funkcja testu, która pomaga mojemu mózgowi w rekursji. Ma liczbę, a następnie pokazuje wszystkie mnożenia dwóch, dopóki nie trafi w numer docelowy. więc jeśli wejdę:
testrecurse(1,1000)
Otrzymuję:
[2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
który jest wielki! Wyjście wygląda dobrze i czysto. Ale tutaj jest mój problem, mam trudności z dodaniem lub dodaniem tej pierwszej wartości, w moich wynikach. Oto, jak chcę wyglądać dane wyjściowe.
[1,2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
Próbowałem zmieniając
x=[] to x=[z]
ale potem otrzymują:
[1, 2, 2, 4, 4, 8, 8, 16, 16, 32, 32, 64, 64, 128, 128, 256, 256, 512, 512, 1024, 1024]
Każda pomoc będzie mile widziane, jestem nowy na rekursji i to sprawia, że mój ból głowy.
Spróbuj dodać przed pomnożeniem przez 2, a zamiast tego zmień 'if z
Och, dziękuję ci za to, nie zdawałem sobie sprawy, że taka prosta zmiana to naprawi. – Unknown