递归伪代码:执行print语句的顺序

时间:2014-06-16 18:12:38

标签: recursion pseudocode

我不确定下面的代码会打印出来。有人可以请尽可能详细解释吗?这是递归吗?

void h ( int n )
   if ( n >=  4 )
      h ( n / 2 )
   end if 
   print n 
end h

执行呼叫h(16)时打印的内容是什么?

1 个答案:

答案 0 :(得分:1)

为什么不查看程序输出的小整数值,比如说n == 42?这是伪代码的Python实现:

def h(n):
    if n >= 4:
        h(n/2)
    print(n)

我假设n/2在这里意味着浮点除法,那部分不清楚你的伪代码。 h(42)将推出:

2.625
5.25
10.5
21.0
42

以下是发生的事情:首先n是42,42 >= 4。因此,h(21)被调用。 21 >= 4,因此h(10.5)被调用。 10.5 >= 4,因此h(5.25)被调用。 5.25 >= 4,因此h(2.625)被调用。最后是2.625 < 4,因此没有对h的另一次调用。相反,打印2.625。现在h(2.625)已完成,h(5.25)可以继续并打印5.25,依此类推,直到h(42)通过打印完成调用链。所以总结一下{{1} } {}} h(n)将继续将h(n)除以2,直到n,然后以相反的顺序打印这些分割的结果。

您应该能够找出n < 4现在打印的内容。