2017-02-23 112 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