int tarai(int x, int y, int z); int tarai_sub(int x, int y, int z_x, int z_y, int z_z) { if (x > y) { int z = tarai(z_x, z_y, z_z); return tarai_sub(tarai(x-1,y,z), tarai(y-1,z,x), z-1, x, y); } return y; } int tarai(int x, int y, int z) { return tarai_sub(x, y, z, z, 0); }