2009-11-04 8 views
1

Donc, je lisais sur les listes liées et la récursivité. Je voulais juste savoir pourquoi je ne peux pas utiliser la récursivité dans une méthode qui est statique? En outre, je me demandais dans Java dans la récursion liste des liens, pourquoi vous pouvez utiliser le vide statique dans l'impression ou la recherche des nœuds. Je vous remercie.Liste liée Récursion

+0

Quel langage de programmation spécifique? – Derek

+0

Cela ressemble à une question Java ou C#, étant donné le contexte et la valeur de retour. (C++ est très peu probable compte tenu du contexte) – monksy

+0

Oui! vous avez raison, c'est Java. – Cruiser

Répondre

1

Vous pouvez utiliser une méthode statique lors de l'utilisation de la récursivité. Il vous suffit de transmettre toutes les informations nécessaires pour travailler dans la fonction. Avec les listes liées, la récurrence est fortement encouragée en raison de la façon dont elles sont conçues (chaque nœud contient une référence au nœud suivant et (parfois) son précédent).

+0

Selon la capacité du compilateur JIT à effectuer l'optimisation de la récurrence de la queue, le traitement récursif d'une longue liste liée peut entraîner un dépassement de capacité de la pile. –

4

Vous pouvez utiliser la récursivité dans une fonction statique. Il lui suffit de retourner sa valeur ou de faire ce qu'il est censé faire par le biais d'effets secondaires, souvent considérés comme dangereux. Mais pour l'impression, cela prend tout son sens.

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