Hi deadshox,
falls Du irgendwann mal auf Compilersprachen umsteigen wollen solltest, dann
lies Dir unbedingt mal was über scopes (weiß grad nicht wie die sich auf deutsch
nennen) durch. So paar Sachen, die Du hier machst, gehen bei vielen Sprachen
nämlich mal gar nicht klar.
So hast Du beispielsweise die Variable 'list' im scope der while Schleife
deklariert, verwendest sie aber im scope der collatz_conjecture Funktion. Dass
sowas in Python funktioniert finde ich als C-Entwickler fast schon
ekelerregend^^ Ähliches gilt für die 'result' Variable, die im scope des if bzw.
else deklariert wird und im scope der collatz_conjecture Funktion verwendet
wird.
Weiterhin komisch ist, dass Du 'list' als Liste deklarierst, bei der Übergabe
an collatz_conjecture aber wie einen integralen Typen verwendest.
Ansonsten kann man so 1-2 Sachen noch kürzer/eleganter formulieren, ist aber
wohl eher Geschmackssache.
Bei mir würde das dann ungefähr so aussehen:
#! /usr/bin/python3.1
# recursive function
def collatz_conjecture(plist):
lastNumber = plist[len(plist)-1]
nextNumber = \
lastNumber / 2 if lastNumber % 2 == 0 else lastNumber * 3 + 1
plist.append(nextNumber)
return True if nextNumber == 1 else collatz_conjecture(plist)
while True:
# get a nature number
n = int(input("Enter a nature number: "))
list = [n]
collatz_conjecture(list)
# Show all results of collatz_conjecture()
print(list)
# do it again?
again = raw_input("Once again? y/n")
if again == 'n':
break
else:
print("")