我正在尝试在 Forth 中编写一个Hofstadter 序列,而不使用递归。我觉得我很接近,但我不断收到一个错误告诉我,
类型错误:x[m[w]] 不是函数
当我用10 MALE
. 我该如何解决这个错误?
我的代码如下:
VARIABLE SIZE
VARIABLE MALE-ARR
VARIABLE FEMALE-ARR
: MALE
DUP SIZE !
CREATE MALE-ARR SIZE @ CELLS ALLOT \ CREATE MALE ARRAY OF LENGTH N
CREATE FEMALE-ARR SIZE @ CELLS ALLOT \ CREATE FEMALE ARRAY OF LENGTH N
0 MALE-ARR ! \ MALE-ARR(0) = 0
1 FEMALE-ARR ! \ FEMALE-ARR(0) = 1
SIZE @ 1 DO
i FEMALE-ARR MALE-ARR i 1- CELLS + @ CELLS + @ - MALE-ARR i CELLS + !
i MALE-ARR FEMALE-ARR i 1- CELLS + @ CELLS + @ - FEMALE-ARR i CELLS + !
LOOP
SIZE @ 0 DO
MALE-ARR i CELLS + @ .
LOOP
;