2017-02-23 169 views
-2

我有一些CS訓練測試的練習題。你能解釋如何得到正確答案嗎?執行此功能時打印什麼?

我不確定這是什麼編程語言,但我嘗試將這些問題轉換爲python來理解這些意思。 enter image description here

這裏是我在python中的嘗試來解決這個問題,但似乎沒有得到正確的代碼,因爲我沒有得到值。 enter image description here

+3

您應該在問題中包含所有相關文本。你不應該喜歡包含代碼的圖像。 –

+0

這看起來像_你能爲我做我的作業_有點問題,我們不在這裏爲你工作。如果你需要幫助解決問題,請說明你的問題和你的嘗試。如果你可以添加一些代碼。它比形象更容易。 – Nicolas

回答

0

你寫

if n >= 0: 

,你應該寫

if n >= 4: 

而且,這裏的關鍵是函數遞歸調用本身。取而代之的

return n/2 

你只需要

f(n/2) 

否則,你return打印,這是不是原來的代碼做什麼之前。

最後,演練。所以你從f(16)開始,並且由於16大於4,它調用f(16/2),並且在內部,由於8大於4,所以叫f(8/2),而且很細,因爲4大於或者等於 4,最後一次它調用f(4/2),在此期間它終於獲得有史以來的第一個print聲明,打印2,然後回到父函數,打印4等等,直到它打印16並完成。

+0

好的,謝謝。現在python只打印2.0有沒有辦法讓python打印函數中的所有值?(2,4,8,16) – julian