// // Recursive definition of basic arithmetic // for natural numbers only // public class Arith { public static int succ(int n){return n+1;} public static int pred(int n){return n-1;} public static boolean isZero(int n){return n==0;} public static int add(int n,int m){ if (isZero(m)) return n; else return add(succ(n),pred(m)); } public static int sub(int n,int m){ if (isZero(m)) return n; else return sub(pred(n),pred(m)); } public static int mult(int n,int m){ if (isZero(m)) return 0; else return add(n,mult(n,pred(m))); } public static int pow(int n,int m){ if (isZero(m)) return 1; else return mult(n,pow(n,pred(m))); } public static void main(String[] args) { int n = Integer.parseInt(args[0]); int m = Integer.parseInt(args[1]); System.out.println(add(n,m) +" "+ sub(n,m) +" "+ mult(n,m) +" "+ pow(n,m)); } }