2013-02-18 4 views
0

В чем проблема? Я попытался подвести список и она всегда возвращает 0Суммарный список в рекурсии

public static int sum(List<Integer> l, Node<Integer> pos, int sum) 
{ 
    if(pos==null) 
     return 0; 
    sum=sum+pos.getInfo(); 
    pos=pos.getNext(); 
    return sum+sum(l, pos, sum); 
} 

public static void main(String[] args) { 
    int sum=0; 
    List<Integer> l = new List<Integer>(); 
    Node<Integer> pos = l.getFirst(); 

    l = input(l, pos); 
    System.out.println(l); 
    System.out.println(sum(l, pos, sum)); 
} 

спасибо.

+3

Действительно ли 'pos' вы передаете« null »? –

+0

, но сумма уже сделана так, почему это имеет значение? –

+0

покажите свой вызов функции. – Arpit

ответ

2

Вы говорите, что в комментариях, что ваш сайт вызова выглядит следующим образом:

public static void main(String[] args) { 
    int sum = 0; 
    List<Integer> l = new List<Integer>(); 
    Node<Integer> pos = l.getFirst();  //<======= `pos' refers to the empty list 
    l = input(l, pos); 
    System.out.println(l); 
    System.out.println(sum(l, pos, sum)); 
} 

Проблема заключается в том, что, так как вы инициализировать pos, прежде чем что-либо добавить к списку, вы всегда подытожить оригинал (пусто) список.

+0

Что ты имеешь в виду? Я, тем не менее, когда pos = l.getFirst(); он всегда указывает на память, а после ввода эта память занята, поэтому pos! = null больше –

+0

@pleasedeleteme: Запустите программу в отладчике и проверьте 'pos'. – NPE

+0

@pleasedeleteme. в API списка нет getFirst(). проверьте здесь http://docs.oracle.com/javase/6/docs/api/java/util/List.html – Arpit

Смежные вопросы