递归算法例解(三)

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

递归算法例解(三)

14.此时执行的语句有:5

5

P(1)

1

4

P(2)

2

4

P(3)

3

结束

P(4)

4

由于p(0)执行完成,且p(0)的方格a中为5,因此继续执行p(1)的语句5 (最后一句),所以p(1)执行完毕,p(1)要进行“出栈”操作。

15.

4

P(2)

2

4

P(3)

3

结束

P(4)

4

由于p(1)执行完成,且p(1)的方格a中为5,因此继续执行p(2)的语句5 (最后一句),所以p(2)执行完毕,p(2)要进行“出栈”操作。

注意:其实步骤10~15重复了步骤4~9,因为它们都调用的P(1)

16.

4

P(3)

3

结束

P(4)

4

由于p(2)执行完成,且p(2)的方格a中为4,因此继续执行p(3)的语句4 :p(w-1); 又由于p(3)方格c中w值为3,所以调用p(2)。

17.开始调用P(2),此时执行的语句有:1、2、3

5

P(2)

2

4

P(3)

3

结束

P(4)

4

当p(2)执行完了,就会执行p(3)中的语句5(所以在方格a中,填“5”)。

执行p(2)的语句2:cout<<w; 打印2(这是第六个结果)

同上面的情况相同,当执行到语句3,还要调用p(1),只有p(1)执行完了,才能继续执行p(2)。

18.开始调用p(1)

省略……

注意:其实步骤17~29重复了3~15,因为它们都调用的P(2)

在这步骤中,又打印了2 1 1(见步骤3、4、10)

四.结论与分析:

步骤

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

结果

4

3

2

1

1

2

1

1

3

2

1

1

2

1

1

第5个结果重复第4个结果,这是因为他们都调用了p(1)

第6、7、8个结果重复第3、4、5个结果,这是因为他们都调用了p(2)

第9~15个结果重复第2~8个结果,这是因为他们都调用了p(3)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航