++ - , , .
, , : , .
template <typename NumT>
NumT raiseTo(NumT base, unsigned exponent) {
if (exponent == 1) return base;
if (exponent == 0) return 1;
if (exponent%2 == 0) { NumT ressqrt = raiseTo(base,exponent/2)
; return ressqrt*ressqrt; }
if (exponent%3 == 0) { NumT rescubrt = raiseTo(base,exponent/3)
; return rescubrt*rescubrt*rescubrt; }
else return base * raiseTo(base, --exponent);
}
, : , 19. 18 , . :
- 19 2 3, b ⋅ b e-1
- 18. 18 2, b e/2
- 9. 9 3, b e/3
- 3. 3 3, b e/3
- b 1 b.
1 + 1 + 2 + 2 = 6 , 1/3 ! , , , . , %3 unsigned, , , int s, NumT==int . , complex, , .