2012-03-10 79 views
0

我試圖在使用遞歸方法的同時在數組中添加元素。但是,由於出現錯誤,我無法執行該方法。所以,因爲我在靜態方法中使用參數,有沒有辦法根據我的代碼執行它?我在調用Java中的靜態遞歸方法時遇到問題

import java.util.Scanner; 
public class Harro { 
    public static void main(String[] args) { 
     input(); 
    } 

    private static void input() { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("Lower bound: "); 
     int lower = scanner.nextInt(); 
     System.out.print("Upper bound: "); 
     int upper = scanner.nextInt(); 
     arrayForm(upper, lower); 
    } 

    private static void arrayForm(int upper, int lower) { 
     int b = 0; 
     int a = Math.abs(lower) + Math.abs(upper); 
     int array[] = new int[a]; 
     for (int i = 0; i < array.length; i++) { 
      array[i] = lower + i; 
     } 
     summation(array[], b); 
    } 

    public static int summation(int array[], int b) { 
     if (b > array.length) { 
      System.out.println("Cannot continue"); 
      return 0; 
     } else{ 
      int result = array[b] + summation(array, b + 1); 
      System.out.println("recursion call: " + b); 
      System.out.println("sum: " + result); 
      System.out.println("parameter 1: " + array[b]); 
      System.out.println("parameter 2: " + array[b + 1]); 
      return result; 
     } 
    } 
} 
+0

您可以請格式化代碼好一點嗎? – m0skit0 2012-03-10 02:05:17

+0

錯誤是什麼? – paislee 2012-03-10 02:05:32

+0

我收到'.class預期',我有summation(array [],b);.難道我做錯了什麼? – Lafret 2012-03-10 02:08:23

回答

3

改變這一行

summation(array[], b); 

summation(array, b); 

[]表示數組類型,你只需要標識符。

+0

是的,你不應該用[] – Chan 2012-03-10 02:21:56

0
private static void arrayForm(int upper, int lower) 
    { 
    int b = 0; 
     int a = Math.abs(lower) + Math.abs(upper); 
    int array[] = new int[a]; 
     for (int i = 0; i < array.length; i++) 
    { 
     array[i] = lower + i; 
    } 
    summation(array, b); 
    } 

編譯錯誤是在該求和呼叫上。您的代碼現在編譯,但仍有一些運行時錯誤

+0

調用數組變量是的,我看到我能做些什麼。 – Lafret 2012-03-10 02:13:50