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|Nial}}==
=={{header|NewLISPl}}==
<lang nial>ack is fork [
<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))
]</lang>
((zero? n) (ackermann (dec m) 1))
(true (ackermann (- m 1) (ackermann m (dec n))))))
</lang>

<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}}==