汉语编程关于汉编词“递归”.docVIP

  • 5
  • 0
  • 约2.54千字
  • 约 4页
  • 2017-06-08 发布于重庆
  • 举报
汉语编程关于汉编词“递归”

关于递归调用的实例:阶乘 编 阶乘 n r --- n1 1- ♂ 1 就 ↑↓ ∽ * ↑↓ 看数摞 等键 ♀ 递归 看数摞 等键 ♀ 否则 ♀ 然后 。 运行结果: 4 4 阶乘 [2] 12 3 [2] 24 2 [1] 24 [1] 24 ★. 看数摞 [1] 24 ★. 等键 此词的功能为,等待键盘输入,将键盘输入的ASCII码放在数摞上, 这里,我们执行 “ 4 4 阶乘 ” 后 可以按任意键查看每次递归运行时, 数摞的变化,等键输入的内容已用“♀” 清除,因此,我们看到的数摞变化, 即为,递归调用本身的数摞变化。 我们需要按四次等键,程序才能执行完毕,每次递归调用都有两次等键操作, 由此可知,本次求4的阶乘,共进行了两次递归调用。 由以上运行结果表明,求4有阶乘,共做了两次递归循环: 输入参数:4 4 做第一次递归后,数摞变为:12 3 12 4*3 数摞状态为:[2] 12 3 做第二次递归后,数摞变为:24 2 24 4*3*2 数摞状态为:[2] 24 2 反回结果:24 数摞状态为:看数摞 [1] 24 ★. 本次程序运行并没有 做第三次递归 24 4*3*2*1,因为,程序中设置了条件 1- ♂ 1 就 ↑↓ ∽ * ↑↓ 看数摞 等键 ♀ 递归 看数摞 等键 ♀ 否则 ♀ 然后 就是说,只有 自变量r 大于1时,才执行递归操作 否则,就会清除r,并且退出递归调用,反回阶乘值 做第三次递归,也就是24 24*1的情况,对于1来说, 任何数,乘1都等于本身,所以,没必要做这一次递归, 事实上,是可以设置成,求4的阶乘做三次递归的,将 程序改为如下: 编 阶乘1 n r --- n1 1- ♂ 0 就 ↑↓ ∽ * ↑↓ 看数摞 等键 ♀ 递归 看数摞 等键 ♀ 否则 ♀ 然后 。 运行结果如下: 摞初始 ★ 4 4 阶乘1 [2] 12 3 [2] 24 2 [2] 24 1 [1] 24 [1] 24 [1] 24 ★. 看数摞 [1] 24 ★. 由以上运行结果表明,求4有阶乘,共做了三次递归循环: 输入参数:4 4 做第一次递归后,数摞变为:12 3 12 4*3 数摞状态为:[2] 12 3 做第二次递归后,数摞变为:24 2 24 4*3*2 数摞状态为:[2] 24 2 做第三次递归后,数摞变为:24 2 24 4*3*2*1 数摞状态为:[2] 24 1 反回结果:24 数摞状态为:看数摞 [1] 24 ★. 从以上测试,我们可以知道,在汉编中,递归调用,是调用“递归”这个词这前的 代码内容,数摞状态: [2] 12 3 [2] 24 2 [2] 24 1 是执行三行递归循环的状态 三次递归循环后,再执行三次“递归”词后面的代码,本词中,“递归”词后面, 只有代码“看数摞 等键 ♀”,而这个代码,正是查看递归调用后数摞状态的, 所以,编译器上会显示如下的数摞状态: 24 [1] 24 [1] 24 ★. 注意“看数摞 [1] 24 ★.”是执行完“4 4 阶乘”指令后,我们为了查看阶乘的 结果,而输入的“看数摞”指令,得到的数摞状态。 由此可见,在汉编中,递归调用,在“递归”词前,必须保证参数合法, 即本例中,参数为两个数,那么,在递归词前面的数摞,必须是合法的两个数 否则,编译器会出现异常提示。在“递归”词后面,如果有代码,那么, 是递归调用完成“递归”词前的代码后,再以同样的次数调用“递归”词后的 代码,根据这一原理,上面的“阶乘”词 可以简化为: 编 阶乘2 n --- n1 ♂ 1 就 ♂ 1- 看数摞 等键 ♀ 递归 * 看数摞 等键 ♀ 然后 。 运行结果如下: 4 阶乘2 [2] 4 3 [3] 4 3 2 [4] 4 3 2 1 [3] 4 3 2 [2] 4 6 [1] 24 ★. 看数摞 [1] 24 ★. 此运行结果表明,做了三次递归循环,执行过程如下: 第一步:汉编词“递归”前代码循环调用 第一次递归:数摞变为:4 3 数摞等键查看状态为: [2] 4 3 第二次递归:数摞变为:4 3 2 数摞等键查看状态为: [3] 4 3 2 第三次递归:数摞变为:4 3 2 1 数摞等键查看状态为: [4] 4 3 2 1 第二步:汉编词“递归”后代码等同前面次数的循环调用 第一次:数摞变为:4 3 2 2 2*1 数摞等键查看状态为: [3] 4 3 2 第二次:数摞变为:4 6 6 3*2*1 数摞等键查看状态为: [2] 4 6 第三次:数摞变为:24 24 4

文档评论(0)

1亿VIP精品文档

相关文档