汉诺塔递归工作栈执行情况.pptVIP

  • 18
  • 0
  • 约小于1千字
  • 约 10页
  • 2016-06-22 发布于湖北
  • 举报
递归调用的内部实现原理 (1)在执行调用时,计算机内部执行如下操作: a. 开辟存储空间,用于保存返回地址、被调层中的形参和局部变量的值。 b. 为被调层准备数据:计算实参的值,并赋给对应的形参(在栈顶元素中)。 c.转入子程序执行。 递归调用的内部实现原理 (2)在执行返回操作时,内部实现如下: a. 若函数有引用型形参或者返回值,将其值保存到回传变量中。 b. 从栈顶取出返回地址,并退栈(同时撤掉被调层局部变量和形参)。 c.按返回地址返回。 d.在返回后执行如此操作:若函数有引用型形参或者返回值,从回传变量中取出所保存的值并传送到相应的实参或者位置上。 递归的模拟 (1)设置一个栈(不妨用S表示),并且开始时将其置为空。 (2)在递归函数入口处设置一个标号(不妨设为L0)。 (3)对递归函数中的每一处递归调用,用以下几个等价操作来替换: a. 保留现场:开辟栈顶存储空间,用于保存返回地址(不妨用Li,i=1,2,3,...)和调层中的形参和局部变量的值。 b. 为被调层准备数据:计算实参的值,并赋给对应的形参。 c. 转入执行,即执行goto L0。 d. 在返回处设一个标号Li( i=1,2,3,...),并根据需要设置以下语句:若函数有引用型形参或者返回值,从回传变量中取出所保存的值并传送到相应的实参或者代入表达式中。 递归的模拟 (4)对于返回语句,可用以下几个等价操

文档评论(0)

1亿VIP精品文档

相关文档