理解模型——用树的概念理解递归

来源:互联网 发布:javashop最新源码下载 编辑:程序博客网 时间:2024/05/31 00:40

1-模型概述

3个跳转
向下 down
向上 up
平移 move
4个区:

func(…){    # 函起区 func_start    while{        # 循起区 while_start        func(…);        # 循结区 while_end    }    # 函结区 func_end}

5个状态
起后 AFTER_BEGIN :[func_start, while_start]
下后 AFTER_DOWN : [func_start, while_start]
循后 AFTER_MOVE : [while_end, while_start]
上后 AFTER_UP : [while_end, func_end]
结前 BEFORE_END : [while_end, func_end]
简单校检
假设有n次跳转,那么:
- 有(n+2)个状态;
- 2*(n+2)个区操作;
- 所有操作对象都出现两次。

2-示例

这里写图片描述

序号 状态 操作区域 操作对象 1 BEGIN_AFTER 0.func_start;
0.while_start; 2 2 DOWN_AFTER 1.func_start;
1.while_start; 4 3 DOWN_AFTER 2.func_start;
2.while_start; 12 4 UP_AFTER 2.while_end;
2.func_end; 12 5 MOVE_AFTER 1.while_end;
1.while_start; 4&5 6 UP_AFTER 1.while_end;
1.func_end; 5 7 END_BEFOR 0.while_end;
0.func_end; 2