2014-09-27から1日間の記事一覧

たらいまわし関数 竹内関数

逆に、隣接行列だけ見ても さっぱり 終わるのか無限ループになるのかわからない例説明は 竹内関数 wikipedia参照これも隣接行列を書いてみます。 関数一個だけなので 逆にわかりにくい気もしますが。 Tak(X,Y,Z) :- X Tak(X,Y,Z) :- return Tak(Tak(X-1,Y,Z)…

ハノイの塔

なんちゃってPrologっぽく書いてあるけど、Prologでは動かない擬似コード。 ハノイの塔 (1 スタート ゴール 空き 手順) :- 手順=[ (スタート.ゴール) ]. ハノイの塔 (n スタート ゴール 空き 手順) :- ハノイの塔(n-1 スタート 空き ゴール 手順1) , ハノイ…

フィボナッチ数列

次のような末尾再帰の関数によってフィボナッチ数列を計算する場合を考えます 0番目のフィボナッチ数は0 再帰によってNが1になったらX2を返す Fib (0,X1,X2) :- 0. Fib (1,X1,X2) :- X2. Fib (N,X1,X2) :- Fib(N-1, X2,X1+X2).たとえば、7番目のフィボナッ…

停止性問題と、関数の隣接行列

概略)注)こういうのに興味が出てきたら、Haskell使ったほうがいいのかも、と思えてきたけど数学苦手なのでHaskellのドキュメント読んでもさっぱりわかりませんプログラムがちゃんと終了するかどうか、関数の隣接行列によって調べることを考えます 関数の中…