2017-02-23 4 views
-2

Ich habe einige Übungsprobleme für einen CS-Trainingstest. Kannst du erklären, wie man zur richtigen Antwort kommt?Was wird gedruckt, wenn diese Funktion ausgeführt wird?

Ich bin nicht sicher, welche Programmiersprache ist dies aber ich versuche, diese Probleme zu Python konvertieren Sinn zu machen, was diese bedeuten. enter image description here

Hier ist mein Versuch in Python, dies zu lösen, aber es scheint nicht, dass ich den richtigen Code habe, da ich die Werte nicht bekomme. enter image description here

+3

Sie sollten alle relevanten Text in der Frage enthalten. Sie sollten Bilder mit Code nicht mögen. –

+0

Das sieht aus wie _Can tun Sie meine Hausaufgaben für mich_ Art der Frage, wir sind nicht hier, um für Sie zu arbeiten. Wenn Sie Hilfe bei einem Problem benötigen, geben Sie bitte Ihr Problem und Ihre Versuche an. Und wenn Sie etwas Code hinzufügen können. es ist viel einfacher als das Bild. – Nicolas

Antwort

0

Sie schrieb

if n >= 0: 

wo Sie geschrieben haben sollte

if n >= 4: 

Auch hier ist der Punkt, dass die Funktion sich selbst rekursiv aufruft. Statt

return n/2 

brauchen Sie nur

f(n/2) 

Andernfalls Sie return vor dem Druck, das ist nicht das, was der ursprüngliche Code tut.

Schließlich eine Komplettlösung. Sie beginnen also bei f(16), und da 16 größer als 4 ist, ruft es f(16/2), und innerhalb, seit 8 ist größer als 4, ruft es f(8/2), und dünn, seit 4 ist größer als oder gleich 4, ein letztes Mal es ruft f(4/2) an, in dem es schließlich zu der ersten print Anweisung jemals kommt, 2 druckend, dann zurücktrittend auf die Elternfunktion, Drucken 4, und so weiter, bis es 16 druckt und beendet.

+0

OK, danke. Jetzt druckt Python nur 2.0 Gibt es eine Möglichkeit, Python alle Werte in der Funktion zu drucken? (2,4,8,16) – julian

Verwandte Themen