ich komme gerade bei folgender Aufgabe nicht weiter:
Ich soll eine rekursive Funktion schreiben, die eine Dezimalzahl entgegennimmt und diese dann als String als Binärzahl zurückliefert.
Mein Ansatz funktioniert auch, jedoch nutze ich eine globale Variable.. Also werden bei mehrmaligen Aufrufen der Funktion die Ergebnisse in dieser aneinandergereiht. Nun könnte man natürlich die Variable dazwischen immer wieder "leeren", aber das wäre ja zu einfach.
Meine Frage daher: Wie könnte man das ganze ohne globale Variable lösen? Mein Hauptproblem ist einfach, dass ich nicht weiß, wie ich der Funktion ein "Gedächtnis" verpassen kann - wenn man das so sagen kann.
Code: Alles auswählen
result = []
def decInBinRek(n):
## Nimmt eine Dezimalzahl und wandelt diese in eine Binärzahl um, in dem die Zwischenergebnisse in der Liste 'result' zwischengespeichert werden.
if n == 0:
result.reverse()
return "".join(result)
else:
result.append(str(n % 2))
return decInBinRek(int(n / 2))
print(decInBinRek(20))
print(decInBinRek(42))
"""
Output:
10100
10101000101
"""