a^0=1

実数の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回のかけ算で計算できてしまうので、もうちょい踏み込みたいところだ。