3
我試圖使用遞歸定義來實現Hofstadter's Q Sequence:第四,霍夫斯塔特Q序列與遞歸
Q(1) = 1
Q(2) = 1
Q(n) = Q(n - Q(n-2)) + Q(n - Q(n-1)) for n > 2
我得到n > 3
錯誤的結果。這是我到目前爲止有:
: Q recursive
dup 3 <
if
drop 1
else
dup dup 2dup 2 - Q - Q -rot 1- Q - Q +
then ;
在線試玩:http://ideone.com/PmnJRO(編輯:現在已經固定,正確執行)
我認爲這是行不通的,因爲有添加到值在每次調用Q
之後堆棧,其中n
大於2
,使-rot
無法正常工作。
有沒有一個簡單的調整,使這項工作?或者我需要使用不同的方法,也許使用變量爲n
?
OEIS:A005185