todos. Soy un programador muy, muy nuevo. Mi lenguaje de elección en este momento es Python, y siento que tengo una sensación decente. Estoy empezando a aprender sobre recursividad. (Por cierto, si alguien puede recomendar una buena guía sobre esto, ¡por favor hágamelo saber!) Para que todos sepan, esta pregunta es muy elemental, y el código que estoy publicando es horrible, terriblemente incorrecto.Obtener amigos dentro de un grado de separación especificado
De todos modos, estoy tratando de escribir una función que obtenga todos los amigos dentro de un grado específico. Si lo paso 0 como título, solo me quiero a mí mismo. Si lo paso 1, me quiero a mí y a todos mis amigos. 2, me quiero a mí, a mis amigos y a todos sus amigos, y así sucesivamente.
He intentado varias formas diferentes de hacer esto, pero ninguno funciona. Intento visualizar cómo debería funcionar en teoría, y tampoco puedo entenderlo porque soy muy inexperto en esta área. Tal vez un alma amable aquí puede mostrarme todas las formas en que este código falla y luego explicar cómo hacerlo correctamente y/o recomendar una buena guía sobre el tema. Aquí va:
def getFriends(self,degree,friendList):
if degree == 0:
friendList.append(self)
return friendList
else:
friendList = friendList.append(self)
for each in self.friends:
each.getFriends(degree-1,friendList)
No funciona, y sé que he hecho cosas estúpidas y estúpidas. ¡Alguien por favor dame una bofetada y apúntame en la dirección correcta!
Gracias.
usted debe utilizar un conjunto (http://docs.python.org/library/stdtypes. html # set) en lugar de una lista. –
+1 Matthew. Si A es Amigo con B, y B es Amigo con A, A, A.getFriends (5, []) devolverá [A, B, A, B, A, B] – NicDumZ