# Non-recursive version Ackermann function; 20140324 # Transcoded from C++ version of http://blog.clock-up.jp/entry/2013/12/09/200751 ack <- function(m, n, verbose=FALSE) { bmax <- 1E+06 vtab <- numeric(bmax) # Buffer end <- 3 vtab[end-2] <- m vtab[end-1] <- n while (TRUE) { if (end <= 2) break if (verbose) { i <- 1 while (i= bmax) { cat("Buffer overflow error!\n"); return(NA) } } } return(vtab[1]) } ack(3,1,TRUE)