我正在使用Gforth来尝试实现求幂。从理论上讲,我了解基于堆栈的语言应该如何运行。但是,我在 Gforth 上实现它时遇到了困难。
这是我现在拥有的:
: myexp
1 swap ?do rot dup * rot rot loop ;
但是,当我运行它时,我看到一个堆栈下溢,如:
3 2 myexp
:1: Stack underflow
3 2 >>>myexp<<<
Backtrace:
$7F645EFD6EF0 rot
$2
$1
Gforth 的循环结构是否在循环时操纵堆栈?
我对 Forth 的工作原理一无所知,因为我在网上看到的大多数循环示例都相当复杂,而且对于 Forth 的新手来说很困惑。
我的实施有什么问题?