0

我有这种情况:递归过程(或函数)被称为

{DoSomething Data C}

C是应该存储最终结果的变量,函数原型是

proc {DoSomething Data N}
     %.. 
     %.. 
     {DoSomething Data M}
     N = 1 + M
end

N 也是应该存储最终结果但在过程的本地范围内的变量。

现在有人告诉我,起初,当调用该过程时,SAS 是:

注意 C 和 N 之间的等价集(暂时都未绑定)

然后在所有递归完成后,SAS 是

请注意,C 和 N 都绑定到一个值 (6)

退出该过程后,SAS 将与

因为你破坏了 N 变量。这很好。

我的问题是:在过程递归期间会发生什么?C 变量是否链接到部分值结构 1 + M ?然后下一次 M 链接到 1 + M2 ?

4

1 回答 1

1

不,只要我们谈论简单的整数算术,Oz 中就没有部分结构。

这个说法:

N = 1 + M

将阻塞直到M完全确定,即绑定到一个整数。

要真正了解发生了什么,我必须查看完整的代码。但我假设有一个返回具体值的基本情况。一旦达到基本情况,递归将“冒泡”,添加1到内部调用的结果中。

换句话说, 的绑定C只会在最外面的过程调用结束时发生变化,其中Mis5并且C因此绑定到6

于 2012-01-01T16:25:16.030 回答