J'ai une implémentation simple de LinkedList en python. Comment utiliser récursion dans une méthode? Je sais comment fonctionne la récursivité, mais comment utiliser moi-même avec la récursivité. Ce serait bien si quelqu'un peut corriger mon code mais je suis plus intéressé par l'explication afin que je puisse l'utiliser dans différentes méthodes.LinkedLists dans la récursivité python
Code LinkedList:
class Node:
def __init__(self, item, next):
self.item = item
self.next = next
class LinkedList:
def __init__(self):
self.head = None
def add(self, item):
self.head = Node(item, self.head)
def remove(self):
if self.is_empty():
return None
else:
item = self.head.item
self.head = self.head.next
return item
def is_empty(self):
return self.head == None
Mon code est:
def count(self, ptr=self.head):
if ptr == None:
return '0'
else:
return 1 + self.count(ptr.next)
Il me donne une erreur:
def count(self, ptr=self.head):
NameError: name 'self' is not defined
Toute aide est très appréciée.
Je ne recommanderais pas d'utiliser la récursivité pour cela. Il est plus efficace de simplement mettre à jour 'ptr = ptr.next' et de faire une boucle alors que ce n'est pas' None'. – Blorgbeard
Il semble que vous interprétez mal l'utilisation de '' 'self'''. Sans analyser votre code: que fait '' 'return 1 + count (ptr.next)' '' faire? Et pourquoi retourner une chaîne de 0 dans un cas et un nombre 1 dans l'autre ... – sascha
Notez qu'il existe une [limite de récursivité] (https://stackoverflow.com/questions/3323001/what-is-the-maximum -recursion-depth-in-python-et-comment-augmenter-it) en python, donc votre liste ne peut pas être plus longue que ça, ou votre méthode de comptage récursive va planter! – Blorgbeard