我在CS训练测试中遇到了一些练习题。你能解释一下如何找到正确的答案吗?
我不确定这是什么编程语言,但我尝试将这些问题转换为python来理解这些意思。 enter image description here
这是我在python中尝试解决这个问题,但似乎我没有得到正确的代码,因为我没有得到这些值。 enter image description here
答案 0 :(得分: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
并完成。