Endlosschleife

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
makrinu
User
Beiträge: 3
Registriert: Freitag 9. November 2018, 14:52

Hi

Folgender Code (sry bin Anfänger):

def count_digits(x):
if x == 0:
return 0
else:
return len(str(count_digits(x)))
count_digits(32)


Ziel: Ziffern einer Zahl zu zählen und zu returnen.
Problem: Endlosschleife

Bin für jede Hilfe dankbar.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

was willst du denn mit dem rekursiven Aufruf der Funktion count_digits erreichen?

Code: Alles auswählen

return len(str(count_digits(x)))
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@makrinu: Überleg doch einfach mal was da passiert. Du rufst die Funktion mit 32 auf. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird. Das ist nicht 0 also geht die Funktion in den ``else``-Zweig, wo die Funktion mit 32 als Argument aufgerufen wird…
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

@__blackjack__ Danke das du mich so herzhaft zum Lachen gebracht hast.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
makrinu
User
Beiträge: 3
Registriert: Freitag 9. November 2018, 14:52

Danke für die Antworten ^^
Mittlerweile bin ich auf das richtige Ergebnis gekommen!

Ausdrücken wollte ich damit, dass die einzelnen Ziffern der Zahl gezählt werden.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@makrinu: Was Du ausdrücken wolltest war uns glaube ich allen klar, nicht so klar war warum Du das *so* ausgedrückt hast. Man kann das auch rekursiv machen, und so etwas wird gerne mal als Aufgabe für Rekursion gestellt, aber dann hat man eben eine rekursive Lösung und keine wo die ”normale” Lösung im Grunde auch noch einmal komplett drin ist.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten