Ackermann function: Difference between revisions
Content added Content deleted
(→{{header|Go}}: add sub-sections; remove unsafe usage; recover from panic; add A(3,1e6) and A(4,2)) |
|||
Line 4,043: | Line 4,043: | ||
</lang> |
</lang> |
||
=={{header| |
=={{header|NewLISPl}}== |
||
<lang |
<lang newlisp> |
||
#! /usr/local/bin/newlisp |
|||
= [0 first, first], +[last, 1 first], |
|||
= [0 first, last], ack [ -[first, 1 first], 1 first], |
|||
(define (ackermann m n) |
|||
ack[ -[first,1 first], ack[first, -[last,1 first]]] |
|||
(cond ((zero? m) (inc n)) |
|||
⚫ | |||
((zero? n) (ackermann (dec m) 1)) |
|||
(true (ackermann (- m 1) (ackermann m (dec n)))))) |
|||
⚫ | |||
<pre> |
|||
In case of stack overflow error, you have to start your program with a proper "-s <value>" flag |
|||
as "newlisp -s 100000 ./ackermann.lsp". |
|||
See http://www.newlisp.org/newlisp_manual.html#stack_size |
|||
</pre> |
|||
=={{header|Nim}}== |
=={{header|Nim}}== |