边界情况处理不完整 负数输入:如 a = -2,循环条件 ++j < -2 永远为假,返回 -2,但数学上 -2^-2 是分数 大数溢出:如 a = 10,返回 10^10 = 10000000000,超出 int 范围 int 自次方(int a) { if (a == 0) return 1; if (a < 0) return 0; // 负数幂为分数,int 无法表示 int f = 1; for (int j = 0; j < a; j++) { f *= a; } return f; }