我有一些通過調用square,cube和hypercube方法計算冪的代碼。目前立方體方法調用程序中的方形方法,然後超立方體方法調用立方體方法。我想用調用power方法來替換對cube和hypercube的調用,但我完全被卡住了。創建不同的電源方法
這是原來的代碼工作。
public int square(int x){
int i = (x*x);
return i;
}
public int cube(int x){
int i = (x * square(x));
return i;
}
public int hypercube(int x){
int i = (x * cube(x));
return i;
}
public int power(int x, int n){
int k;
if (n==2){
k = square(x);
}
else if (n==3){
k = cube(x);
}
else if (n==4){
k = hypercube(x);
}
else if (n==1){
k = x;
}
else {
k = 1;
for (int i = 0; i < n; i++) {
k *= x;
}
}
return k;
}
現在就像我說我要替換立方體和超立方體中的方法調用的功率的方法的調用,那麼我還是有通話方,電力方法立方體等。所以我想完全刪除對這些方法的調用,因爲我不再需要它們。它真的讓我煩惱。 這是我迄今爲止,但它給了我StackOverFlowError。
public int square(int x, int n){
int i = power(x, n);
return i;
}
public int cube(int x, int n){
int i = power(x , n);
return i;
}
public int hypercube(int x, int n){
int i = power(x , n);
return i;
}
public int power(int x, int n){
int k;
if (n==2){
k = square(x, n);
}
else if (n==3){
k = cube(x, n);
}
else if (n==4){
k = hypercube(x, n);
}
else if (n==1){
k = x;
}
else {
k = 1;
for (int j = 0; j < n; j++) {
k *= x;
}
}
return k;
}
我可以清楚地看到,我正在以完全錯誤的方式去解決問題,並且我可以明白爲什麼它不起作用。我只是感到困惑,因爲我可以如何讓它工作 –
你在上一個問題中已經回答了這個問題。尋找'@ MightyPork'給出的答案 – Smit