Mein Parameter n
ist eine Telefonnummer als Ganzzahl.
Mit Rekursion möchte ich die ersten drei Zahlen in der ganzen Zahl zurückgeben.
Ich habe den Integer in eine Liste mit einzelnen Zahlen verwandelt und versuche die letzte Zahl immer wieder zu löschen, bis ich mit den letzten drei übrig bin, aber ich merke, wie ich es wiederholen soll .
%Vor% Ich weiß, dass ich den Namen irgendwie in der Rückkehr wiederholen soll, aber weil n
keine ganze Zahl ist, die ich benutzen kann, um sie zu wiederholen. Was mache ich?
Ich nehme an, dass dies eine Übung ist, bei der Rekursion notwendig ist. Falls ja, versuchen Sie es (es gibt bessere Möglichkeiten, Ihr Endziel zu erreichen, aber ich habe versucht, Ihren bestehenden Code so wenig wie möglich zu ändern):
%Vor%Dadurch wird die Funktion erneut aufgerufen, wenn die Länge der Zahl größer als drei ist, und die Nummer andernfalls zurückgegeben. Im Grunde genommen war der einzige Teil, den Sie in Ihrer ursprünglichen Funktion vermissten, der folgende, der rekursive Teil:
%Vor%Beachten Sie, dass für eine rekursive Funktion zwei Hauptattribute bestehen:
Du hast # 1 erwähnt, als du geschrieben hast, dass du "den Namen in der Rückkehr" verwenden sollst, also ist das großartig! Sie müssen das nur in Ihren Code schreiben:
return areaCodes(n)
, wobei n
die aktualisierte Telefonnummer mit einer entfernten Ziffer ist.
Wie Sie sehen können, sollte jeder rekursive Aufruf einige Arbeit in Richtung der Lösung leisten und sollte seine Mini-Lösung an den nächsten rekursiven Aufruf übergeben.
Zusammen mit dem obigen Punkt 2 müssen Sie einen Basisfall angeben, in dem die Rekursion aufhört. Da Sie also jedes Mal, wenn Sie Ihre Funktion aufrufen, eine Ziffer wegnehmen, sollten Sie eine Überprüfung durchführen, um festzustellen, ob die aktuelle Eingabe die gewünschte Länge hat.
Wenn die richtige Länge ist, sind Sie fertig, und Sie sollten die aktuelle Zahl (nicht einen weiteren rekursiven Aufruf) zurückgeben.
Andernfalls sind Sie mit der Rekursion noch nicht fertig.