开发者社区 问答 正文

数据结构与算法 程序中需要设置____个语句标号。

将下列递归过程改写为非递归过程后,程序中需要设置____个语句标号。

展开
收起
知与谁同 2018-07-17 10:49:57 1516 分享 版权
2 条回答
写回答
取消 提交回答
  • 需要两个语句标号吧,因为程序体中有两次调用
    2019-07-17 22:53:07
    赞同 展开评论
  • Nothing for nothing.
    答案是:1+2 = 3, 空格处填3.
    程序有语法错误。那个if后面少了花括号。哦,不是少了花括号,是多了test(sum)。
    所以你先要将程序改正过来。然后看变换规则:
    设P是一个递归算法,假定P中共有m个值参和局部变量,共有t处递归调用P的语句,则把P改写成一个非递归算法的一般规则为:
    1、 定义一个栈S,用来保存每次递归调用前值参和局部变量的当前值以及调用后的返回地址。即S应该含有m+1个域,且S的深度必须足够大,使得递归过程中不会发生栈溢出。
    2、 定义t+2个语句标号,其中用一个标号标在原算法中的第一条语句上,用另一个标号标在作返回处理的第一条语句上,其余t个标号标在t处递归调用的返回地址,分别标在相应的语句上。
    2019-07-17 22:53:07
    赞同 展开评论