15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// The Computer Language Shootout 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// http://shootout.alioth.debian.org/ 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// contributed by Isaac Gouy 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function ack(m,n){ 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m==0) { return n+1; } 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (n==0) { return ack(m-1,1); } 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return ack(m-1, ack(m,n-1) ); 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function fib(n) { 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (n < 2){ return 1; } 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return fib(n-2) + fib(n-1); 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)function tak(x,y,z) { 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (y >= x) return z; 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return tak(tak(x-1,y,z), tak(y-1,z,x), tak(z-1,x,y)); 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)for ( var i = 3; i <= 5; i++ ) { 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ack(3,i); 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fib(17.0+i); 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) tak(3*i+3,2*i+2,i+1); 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 26