我有这种情况:递归过程(或函数)被称为
{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?
答案 0 :(得分:1)
不,只要我们谈论简单的整数算术,Oz就没有部分结构。
本声明:
N = 1 + M
将阻塞,直到M
完全确定,即绑定为整数。
要真正理解发生了什么,我必须看到完整的代码。
但我假设有一个返回具体值的基本情况。一旦达到基本案例,递归将“冒泡”,将1
添加到内部调用的结果中。
换句话说,C
的绑定只会在最外层过程调用结束时更改,其中M
为5
,C
因此绑定到{ {1}}。