编写一个名为printPowersOfN的方法,该方法接受基数和指数作为参数,并打印基数从base0(1)到最大功率的每一次幂(包括最大功率)。例如,考虑以下调用:
printPowersOfN(4, 3);
printPowersOfN(5, 6);
printPowersOfN(-2, 8);
这些调用应该产生以下输出:
1 4 16 64
1 5 25 125 625 3125 15625
1 -2 4 -8 16 -32 64 -128 256
public class prac {
public static void main(String[]args) {
printPowersOfN(4,3);
printPowersOfN(5,6);
printPowersOfN(-2,8);
}
public static void printPowersOfN(int num1, int num2) {
int k =(int) Math.pow(num1, num2);
for (int i=1; i<=num2;i++) {
System.out.print( k + " ");
}
System.out.println();
}
}
我的输出是:64 64 64
15625 15625 15625 15625 15625 15625
256 256 256 256 256 256 256 256 256 256
为什么这只是一遍又一遍地打印最大功率,而不是导致指数的所有功率?(不知道我的措辞是否恰当)我做错了什么?我想用数学。战俘方法
为什么这只是一遍又一遍地打印最大功率,而不是指数前的所有次幂?
因为你在k
中存储了最大功率:
int k =(int) Math.pow(num1, num2);
并在循环中一次又一次地打印k。
System.out.print( k + " ");
你也应该改变k的值。例如:
int k;
for (int i=0; i<=num2;i++) {
k =(int) Math.pow(num1, i);
System.out.print( k + " ");
}
您可能需要根据您的需求进行轻微的更改,但这可以让您对出错的地方有一个大致的了解。
可以,现在试试
public static void main(String[]args) {
printPowersOfN(4,3);
printPowersOfN(5,6);
printPowersOfN(-2,8);
}
public static void printPowersOfN(int num1, int num2) {
int k = 0;
for (int i=0; i<=num2;i++) {
k =(int) Math.pow(num1, i);
System.out.print( k + " ");
}
System.out.println();
}
计算循环外的功率k
,然后一遍又一遍地打印它。在每个循环迭代期间改变的值i
根本不使用。