//--------------------------------------------------------------------------- // // Time-stamp: <2003-08-23 06:28:57 sutner> // // :File: Ackermann.cc // :Purpose: Ackermann function // //--------------------------------------------------------------------------- #include #include #include using namespace std; const char *usage = " arg1 arg2 ... better be small integers"; int getopt(int argc, char * const argv[], const char *optstring); void process_commandline( int argc, char* const argv[], int& x, int& y ) { extern int optind; extern char *optarg; if( argc != 3 ) { cerr << "Usage: " << argv[0] << usage << endl; exit(1); } x = atoi( argv[optind++] ); y = atoi( argv[optind] ); } int acker(int x, int y) { return( x ? ( acker( x-1, y ? acker( x, y-1 ) : 1 ) ) : y+1 ); } //-------------------------------------------------------------------------------- int main(int argc, char *argv[]) { int x, y; process_commandline( argc, argv, x, y ); cout << x << ":" << y << " --> " << acker(x,y) << endl; return(0); } //-------------------------------------------------------------------------------- // eof