program expon; var x, answer: real; n: integer; Procedure exp(var x: real; var n: integer; var ans: real); var subprod: real; nhalf: integer; begin if n = 0 then begin ans := 1.0; end else if (2 * (n div 2)) = n then {n is even} begin nhalf := n div 2; exp(x, nhalf, subprod); ans := subprod * subprod; end else {n must be odd} begin nhalf := n div 2; exp(x, nhalf, subprod); ans := x * subprod * subprod; end; end; {exp} begin writeln('x?'); readln(x); writeln('n?'); readln(n); exp(x, n, answer); writeln(x:6:3, ' to the', n:4, ' power is ', answer:10:3); readln; end. Sample output: >x? <2.0 >n? <10 > 2.00 to the 10 power is 1024.000