幂和阶乘的计算注意点
在计算整数型的数值时,若计算用到幂或者阶乘,此时应该注意,若递归或循环调用时尽量使用除法(/),而避免使用乘法(*)。
因为使用乘法若检测数值过大则可能会造成数值溢出而导致结果错误。
例如:给定一个整数 n,返回 n! 结果尾数中零的数量。
int result = 0;
int temp = 5;
while (temp <= n){
result += n/temp;
temp = temp * 5;
System.out.println(temp);
}
System.out.println(temp);
return result;
int count = 0;
while(n >= 5) {
count += n / 5;
n /= 5;
}
return count;
以上两种写法不同,意义相同,但是值得注意的是使用乘法会溢出int的最大值而导致结果不正确。而使用除法则可避免。