Нужно написать функцию, возводящую число в 10 степень.
Так сделал бы нормальный человек:
template <int A, int B>
A func (A a, B b) {
return pow (a, b);
}
Так сделал бы нормальный человек, который не знает stl:
double func (double a, int b) {
for (int i = 0; i < b - 1; ++i) {
a *= a;
}
return a;
}
Но почему, мой сотрудник обязательно напишет
double func (double a) {
return a * a * a * a * a * a * a * a * a * a;
}
??????
А когда понадобится 11 степень, он сделает так:
double func (double a, bool is11 = false) {
if (is11 == true)
return a * a * a * a * a * a * a * a * a * a * a;
return a * a * a * a * a * a * a * a * a * a;
}
А когда появится 12 степень, знаете что произойдет?
double func (double a, int stepen = 0) {
switch (stepen) {
case 0: return a * a * a * a * a * a * a * a * a * a; break;
case 1: return a * a * a * a * a * a * a * a * a * a * a; break;
case 2: return a * a * a * a * a * a * a * a * a * a * a; break;
}
return 0;
}