teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

スタックは使わないまでも、メモリは使うので、メモリ不足になる可能性はあります。

2015/10/02 14:26

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -23,4 +23,7 @@
23
23
  | m, 0 -> rAck cont (m-1) 1
24
24
  | m, n -> rAck (fun x -> rAck cont (m-1) x) m (n-1)
25
25
  in rAck (fun x -> x) m n
26
- ```
26
+ ```
27
+
28
+ いずれにしても、スタックは使わないまでも、メモリは使うので、
29
+ メモリ不足になる可能性はありますね。

1

別のサイトも追記した。

2015/10/02 14:25

投稿

eripong
eripong

スコア1546

answer CHANGED
@@ -11,4 +11,16 @@
11
11
  | m, 0, _ -> ackermann (m - 1) 1 acc
12
12
  | m, n, _ -> ackermann m (n - 1) ((m - 1)::acc)
13
13
  ackermann m n []
14
+ ```
15
+
16
+ 以下のサイトにも、別バージョンがありました。
17
+ [algorithm - Is this implementation tail-recursive - Stack Overflow](http://stackoverflow.com/questions/4424532/is-this-implementation-tail-recursive)
18
+ ```
19
+ let Ackb m n =
20
+ let rec rAck cont m n =
21
+ match (m, n) with
22
+ | 0, n -> cont (n+1)
23
+ | m, 0 -> rAck cont (m-1) 1
24
+ | m, n -> rAck (fun x -> rAck cont (m-1) x) m (n-1)
25
+ in rAck (fun x -> x) m n
14
26
  ```