我正在嘗試創建一個程式,該程式將接受用戶輸入,將該資料輸入到動態陣列中,然后遞回地找到平均值。我的代碼的第一部分有效。這允許將新創建的陣列傳遞給該方法。
public static void main(String args[])
{
int i = 0;
int sum = 0;
double runningTotal = 0;
int classSize;
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter the class size: ");
classSize = keyboard.nextInt();
int newClassSize[] = new int[classSize];
for (i=0; i < newClassSize.length; i )
{
System.out.println("Please enter the grade of the user at: " (i 1));
newClassSize[i] = keyboard.nextInt();
}
findAverage();
for (i=0; i < newClassSize.length; i ){
sum = sum newClassSize[i];
}
System.out.println(Arrays.toString(newClassSize));
keyboard.close();
}
}
然而,這就是我感到困惑和困惑的地方。如何將新創建的陣列傳遞給 findAverage() 方法?然后,我還需要將其保存到累加器中,然后除以。有一個更好的方法嗎?這是我當前的 findAverage() 方法,但我對自己的實作感到困惑。
public double findAverage(int classAverage, int baseCase, double runningAverage)
{
runningAverage = 0;
int sum = 0;
if (newClassSize.length - 1 > baseCase)
runningAverage = newClassSize.length;
return findAverage();
System.out.println("The class average is " classAverage);
}
uj5u.com熱心網友回復:
希望我正確理解了您的問題,但下面是如何做到這一點。基本思想是,當索引達到遞回函式中陣列的長度時,這是基本情況。因此,您所要做的就是將陣列中每個索引點的總和相加,然后繼續將更新后的索引和總和傳遞給遞回函式。
class Main {
public static void main(String[] args) {
int newClassSize[] = {1,2,3}; // User Input let say
double average = findAverage(newClassSize);
System.out.println(average);
}
public static double findAverage(int[] arr){
// Avoid division by zero error
if (arr.length==0){
return 0;
}
return findAverageHelper(arr,0,0);
}
public static double findAverageHelper(int[] arr, int index,int sum){
if (index==arr.length){ // Base Case
return (double) sum/arr.length;
}
// Increase index and add current value at index to sum
return findAverageHelper(arr,index 1,sum =arr[index]);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/418418.html
標籤:
下一篇:在字串串列中連接由空格分隔的字串
