a^0=1
個人的には難しすぎて納得がいかない。
a^nは、aをn回かけるんだから、
a^3=a*a*a
ところで、
a^n = 1 * a^n
と、1をかけても値は変わらない。ということは、
a^3 = 1 * a * a * a
それなら、
a^0 = 1
なことは自明なんでは。つまり、1にaを0回かけてみたみたいな。
プログラマ思考
プログラマがズルをせずにまじめにコードにすると多分こうなる。
int pow_i(int a, int n) { int v = 1; for(int i = 0; i < n; i++) v *= a; return v; }
どう考えたって、最初にvに初期値として1を入れておかざるを得ない。これに気づかないとなると、
int pow_i(int a, int n) { int v = a; for(int i = 1; i < n; i++) v *= a; return v; }
というマヌケなコードになるけど、これだと定義域がn>=1に限定されてしまうので切ない。
というか、プログラマをやっていて、初期値が1であることに気づけなかったらかなり切ない。
まぁ、ぶっちゃけ、a^15なんて、もう少し考えれば、6回のかけ算で計算できてしまうので、もうちょい踏み込みたいところだ。