fun power (n,0) = 1 | power (n,k) = n * (power (n, k-1)); fun power2 (n,0) = 1 | power2 (0,k) = 0 (* just makes it a bit faster *) | power2 (n,k) = if k < 0 then 0 else n * (power2 (n, k-1)); fun power3 (n,k) = if k = 0 then 1 else if n = 0 orelse k < 0 then 0 else n * (power3 (n, k-1)); fun power4 n 0 = 1 | power4 0 k = 0 | power4 n k = if k < 0 then 0 else n * (power4 n (k-1)); (*fun powerAux (a,0,k) = a | powerAux (a,n,k) = powerAux(a*n,n,k-1); fun power k n = if n = 0 orelse k < 0 then 0 else powerAux(1,n,k);*)