因此,我和我的朋友試圖編碼這個小遊戲時,我們是一個叫LOVERS .. 其中你寫下2人的名字,沒有中間名的全名,並計算L,O,V的數量, E,R和S的名字,加在一起放在字母旁邊。這可以遞歸地完成嗎?
樣品:
名稱1:你好
名稱2:護理
L:2
○:1
五:0
E:2
R:1個
S:0
之後您將成對添加它們。
樣品:
L:2> 3> 4> 7> 15> 32
○:1> 1> 3> 8> 17
五:0> 2> 5> 9
E: 2> 3> 4
R:1> 1個
S:0
這裏是怎麼一回事呢?首先你添加的第2個字母的數值... LO然後OV然後VE等等等。直到你在這種情況下得到一個最終答案32 ... 32表示兩個人相互之間相容的百分比。
我知道它很愚蠢。哈哈,但我們只是試圖編寫它的樂趣。我們是philppines的第二年IT學生。無論如何,我們想知道是否有辦法進行RECURSIVELY計算,以及是否有辦法減少使用的陣列數量。
這裏是我們的代碼:
import java.util.*;
public class LOVERS {
static Scanner console = new Scanner(System.in);
public static void main(String[] args) {
String name1="";
String name2="";
char love[] = {'L','O','V','E','R','S'};
int[] lovers = new int[6];
int[] temp= new int[6];
int[] temp2= new int[6];
boolean done = true;
while(done){
name1 = getName();
name2 = getName();
temp = getLetterCount(name1);
temp2 = getLetterCount(name2);
lovers = sumOfLetters(temp,temp2,love);
System.out.println("");
int[] firstLayer = new int[5];
int[] secondLayer = new int[4];
int[] thirdLayer = new int[3];
int[] fourthLayer = new int[2];
firstLayer = sums(lovers);
secondLayer = sums(firstLayer);
thirdLayer = sums(secondLayer);
fourthLayer = sums(thirdLayer);
int output = fourthLayer[0]+fourthLayer[1];
if(output>100){
output=100;
}
System.out.println("Result is : "+ output +"%");
System.out.println("Do you want to try again? Y/N :");
char again = ' ';
if(again == 'n')
{
done = false;
}
else done = true;
}
}
public static int[] sums (int[] y){
int[] x = new int[y.length-1];
for(int ctr=1;ctr<y.length;ctr++){
x[ctr-1]=y[ctr-1]+y[ctr];
}
return x;
}
public static String getName(){
String n="";
System.out.println("Enter name: ");
n = console.nextLine();
n = n.toUpperCase();
return n;
}
public static int[] sumOfLetters(int[] temp, int[] temp2, char[] love){
int[] lovers = new int[6];
for(int ctr=0;ctr<6;ctr++){
lovers[ctr]=temp[ctr]+temp2[ctr];
System.out.println(love[ctr]+" - "+lovers[ctr]);
}
return lovers;
}
public static int[] getLetterCount(String n){
int[] temp = new int[6];
for(int x=0;x<n.length();x++){
if(n.charAt(x)=='L'){
temp[0]++;
}
else if(n.charAt(x)=='O'){
temp[1]++;
}
else if(n.charAt(x)=='V'){
temp[2]++;
}
else if(n.charAt(x)=='E'){
temp[3]++;
}
else if(n.charAt(x)=='R'){
temp[4]++;
}
else if(n.charAt(x)=='S'){
temp[5]++;
}
}
return temp;
}
}
,你可以看到我們用4個陣列的4層計算,我們使用循環語句進行計算。
所以這可以做到RECURSIVELY?以及我們如何減少使用的數組數量?
這可以幫助我們很好地學習如何做適當的遞歸函數,因爲我們正在學習數據結構。希望你們能幫助我。謝謝
嗯...我會嘗試編輯代碼now..and發佈修訂版本....我希望我有你的觀點.....我其實有點困惑在做遞歸函數但是...無論如何感謝提供暗示... – Kevin 2011-06-12 13:45:57
如果你想在你的代碼遞歸和優化的兩個提示,爲什麼不做2個問題?這對每個人來說都容易得多。 – Kissaki 2011-06-12 13:47:44
什麼?只需創建2個問題... – Kissaki 2011-06-12 14:03:19