;==================== File: ackermann.scm =========================== ; Author: Mihaela Malita ; Title: ACKERMANN's Function - call (ack n m) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define ack (lambda (n m) (cond ((zero? n) (+ 1 m)) ((zero? m) (ack (- n 1) 1)) (#t (ack (- n 1) (ack n (- m 1)))) ) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; A C K E R M A N N, in TLISP on IBM_PC 286 ; n m # of calls ACK(n m) ;---------------------------------------------------------- ; 1 1 4 3 ; 1 2 6 4 ; 2 1 14 5 ; 2 2 27 7 ; 2 3 44 9 ; 3 2 541 29 ; 3 3 STOPS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; A C K E R M A N N in PASCAL on IBM_PC 286 ; n m #of calls ACK(n m) ;------------------------------------------------------ ; 3 3 2432 61 ; 3 4 10307 125 ; 4 3 STOPS _ ;Ackermann in PASCAL ;function ack(n,m:integer):integer; ;begin ; i:=i+1; ; if n=0 then ack:=m+1 ; else if m=0 then ack:=ack(n-1,1) ; else ack:=ack(n-1,ack(n,m-1)); ;end; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Ackermann in C on 286 ; n m nr. de apeluri ACK(n m) ;--------------------------------------------------- ; 3 3 2432 61 ; 3 4 10307 125 ; 4 3 STOPS _ ; Ackermann written in C ; int ack(int n,int m) { ; i++; ; if( n == 0 ) return m+1; ; else ; if ( m == 0 ) return ack(n-1,1); ; else ; return ack(n-1,ack(n,m-1)); ; }