最初の例: フィボナッチ数列を出力
echo "[lA p c lA lB + d sN lB d sA lN d sB lFx]d sF 1 sA 1 sB lFx" | dc | head -100
おおまかに説明すると、[ ]d sF
が函数Fを定義する部分で、lFx
によって定義した函数Fを実行しています。[ ]d sF
のsとはsaveの意味で、式[ ]
をレジスタFに保存するという意味があります。
ここでは函数Fもとい[ ]
の中にそれを読み出して実行するlFx
が含まれているため、再帰的な計算が可能になっているわけです。