《学堂在线》清华郑莉老师的《Java程序设计 2025春》习题和程序设计题记录
ch1 Java语言基础知识编程题
编程题目1,描述 Pow函数 难度
实现x的n次方,x为类型为double,n的类型为int. 给定输入为x n, 输出x的n次方结果。
输入描述 无
输出描述 无
示例1:
输入:0.2 5
输出:0.00032
限制 时间:1000ms 空间:512MB
/*给讯飞星火提示词:帮我用Java写一个最优化的 double pow( double x, int n) 函数。 讯飞星火给出了如下程序实现, 该实现采用了快速幂算法(Exponentiation by Squaring),时间复杂度为 O(log n),并且处理了负指数的情况。 这种程序写法或许不应在Java程序设计这样的入门课中标注难度为1/5。不过作为清华的课程,或许可以理解。 */ import java.util.Scanner; class Main { public static double pow(double x, int n) { if (x == 0.0) { return (n == 0) ? 1.0 : 0.0; } if (n == 0) { return 1.0; } if (n < 0) { x = 1.0 / x; n = -n; } double result = 1.0; double base = x; while (n > 0) { if ((n & 1) == 1) { // 如果 n 是奇数 result *= base; } base *= base; // 平方基数 n >>= 1; // 右移一位,相当于 n /= 2 } return result; } public static void main(String[] args) { Scanner in = new Scanner(System.in); double x = in.nextDouble(); int n = in.nextInt(); System.out.print(pow(x, n)); in.close(); } }