Skip to content

Instantly share code, notes, and snippets.

@YuukiToriyama
Created April 14, 2019 17:21
Show Gist options
  • Save YuukiToriyama/aa601e7655c9438b5b8dcc7ffc19c70c to your computer and use it in GitHub Desktop.
Save YuukiToriyama/aa601e7655c9438b5b8dcc7ffc19c70c to your computer and use it in GitHub Desktop.
dcコマンドで再帰計算

dcコマンドを使って計算しよう

最初の例: フィボナッチ数列を出力

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が含まれているため、再帰的な計算が可能になっているわけです。

例1:円周率の計算

ζ(4)を利用した式を計算しています。

echo "20k [1 lN 4 ^ / lA + d sA lN 1 + d sN lA 90 * vv pc lFx]d sF 1 sA 2 sN lFx" | dc | head -20

例2:ネイピア数の計算

echo "20k [lB li * d sB li 1 + d si lA pc lA 1 lB / + d sA lFx]d sF 1 si 1 sA 1 sB lFx" | dc | head -20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment