2017-06-05 49 views
1

我想了解爲什麼我會得到我的結果。比方說,這是代碼和結果:Turbo Prolog執行命令

prolog

很抱歉,如果這是微不足道的,但沒有太多的來源網上關於這個...如果d的輸出(3)是有道理的我,那麼e(3)根本就沒有。 爲什麼在這種情況下移動寫入會顛倒順序?
我猜它與遞歸有關,但我仍然無知,爲什麼。

回答

1

這是因爲在第一種情況:你先寫,然後遞歸調用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等等...