2009-11-04 2 views
1

Итак, я читал о связанных списках и рекурсии. Я просто хотел знать, почему я не могу использовать рекурсию в методе, который является статическим? Кроме того, мне было интересно в Java в рекурсии связанных списков, почему вы можете использовать static void при печати или поиске узлов. Спасибо.Связанный список Recursion

+0

Какой конкретный язык программирования? – Derek

+0

Он выглядит как вопрос Java или C#, учитывая контекст и возвращаемое значение. (C++ очень маловероятен с учетом контекста) – monksy

+0

Да! вы правы своей Java. – Cruiser

ответ

1

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

+0

В зависимости от способности компилятора JIT выполнять оптимизацию хвостовой рекурсии, рекурсивная обработка длинного связанного списка может привести к переполнению стека. –

4

Вы можете использовать рекурсию в функции, которая является static void. Он просто должен вернуть свою ценность или делать то, что он должен делать с помощью побочных эффектов, что часто считается вредным. Но для печати это имеет смысл.

static void printList(node) 
{ 
    if (node != null) 
    { 
     print(node); 
     printList(node.next); 
    } 
} 

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

  • Нет связанных вопросов^_^