Ich versuche zu zählen, wie oft die Methode während der Laufzeit des Programms rekursiv ist. Der folgende Code erhält das gewünschte Ergebnis, verwendet jedoch globale Variablen. Gibt es einen Weg um diesen oder einen besseren Weg?Ruby-Rekursionszähler ohne globale Variable
$count = 0
def AdditivePersistence(num)
return 0 if num.to_s.length == 1
numarr = num.to_s.chars.map!(&:to_i)
i = numarr.inject(&:+)
$count+=1
if i.to_s.length!=1
AdditivePersistence(i)
end
$count
end
Dies entspricht nicht der OP-Version. Ihre Version zählt die tiefste Rekursionsstufe separat für jeden einzelnen Aufruf von 'AdditionalPersistence'. Die Version des OP zählt die * laufende Summe * aller * rekursiven Aufrufe während der gesamten Laufzeit des Programms. Also, wenn ich * deine * Version zweimal mit '1234' als Argument anrufe, gibt es beide Male" 2 "zurück, während die OP's Version beim ersten Mal' 2' und beim zweiten Mal '4' zurückgibt. –