Turbo Prolog 执行顺序
Turbo Prolog execution order
我正在努力理解为什么我会得到这样的结果。假设这是代码和结果:
抱歉,如果这是微不足道的,但网上没有太多关于此的资源...如果 d(3) 的输出对我有意义,那么 e(3) 根本就没有意义。
为什么在这种情况下移动写入会颠倒顺序?
我猜它与递归有关,但我仍然不知道为什么。
这是因为第一种情况:你先写然后递归调用d(N1)
,所以比如d(3)
会write 3
然后call d(2)
等等。 .
在第二种情况下:您首先调用 e(N1)
然后写入,这会改变顺序,因为例如 e(1)
将调用 e(0)
,然后调用 e(-1)
将成功,然后 e(0)
将 write 0
然后 e(1)
将 write 1
等等...
我正在努力理解为什么我会得到这样的结果。假设这是代码和结果:
抱歉,如果这是微不足道的,但网上没有太多关于此的资源...如果 d(3) 的输出对我有意义,那么 e(3) 根本就没有意义。
为什么在这种情况下移动写入会颠倒顺序?
我猜它与递归有关,但我仍然不知道为什么。
这是因为第一种情况:你先写然后递归调用d(N1)
,所以比如d(3)
会write 3
然后call d(2)
等等。 .
在第二种情况下:您首先调用 e(N1)
然后写入,这会改变顺序,因为例如 e(1)
将调用 e(0)
,然后调用 e(-1)
将成功,然后 e(0)
将 write 0
然后 e(1)
将 write 1
等等...