3
とホフスタッターQシーケンスIは、再帰的な定義を使用してHofstadter's Q Sequenceを実装しようとしています:、再帰
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