Los artículos de wikipedia son demasiado avanzados para que yo los entienda, ¿alguien podría darme una explicación simple, por favor?
terminology
recursion
calavera
fuente
fuente
recursion
se refiere a una función que se llama a sí misma, mientras que seself-reference
refiere a un objeto que hace referencia a sí mismo.Respuestas:
El contexto de los dos términos es generalmente diferente.
La referencia automática está en el contexto de los datos: tiene un tipo de datos que contiene una referencia a algo del mismo tipo.
Recursivo está en el contexto del código: tiene una función o procedimiento que se llama a sí mismo.
Ejemplo:
fuente
Aquí hay una función recursiva (en C):
Esas dos llamadas al
fibonacci()
interior de lafibonacci()
función son llamadas recursivas .Aquí hay una estructura de datos autorreferencial :
El primer elemento,
data
es solo un puntero a algún tipo de datos. El segundo elemento,next
es un puntero a otraListNode
estructura. Si tiene dos o másListNode
estructuras, puede configurar elnext
puntero de una a la dirección de otra, y así sucesivamente, y luego tiene una lista vinculada . La estructura es autorreferencial porque la definición de la estructura se refiere a sí misma. Si quieres volverte loco, puedes hacer esto:Ahora tiene un tipo diferente de autorreferencia: no es solo la definición de lo
struct ListNode
que se refiere a sí mismo ... ha establecido elnext
punteronode
para que apunte anode
sí mismo. Esta es una lista circular vinculada que contiene solo un elemento. Lindo, pero no muy útil. Lo menciono porque es una especie de autorreferencia, pero no es lo que la gente suele decir cuando hablan de tipos de datos autorreferenciales.fuente
Se espera que las recursiones, en su mayoría útiles, terminen después de cierto número de procedimientos en el sentido de que hay algún valor inicial. a menos que tenga una mala recursión que sea inútil.
Las auto-referencias, en sí mismas, no son exactamente recursiones, pero se puede demostrar que tienen recursividad, en cuyo caso generalmente nunca terminan.
fuente
La recursión implica acción.
Ejemplos:
Técnicamente, la recursividad debe tener un estado de salida, pero no es un requisito.
La autorreferencia implica estructura.
Ex. Un método de instancia que hace referencia al objeto al que está adjunto.
fuente
La recursión requiere algo para procesar mediante la llamada al mismo proceso (a menudo con diferentes parámetros). Aunque a menudo usa funciones y esas funciones se llaman a sí mismas, técnicamente ingresan a un nuevo paso que parece ser el lugar del que provienen.
Auto-referencia significa que algo se refiere a sí mismo. Las clases pueden ser autorreferenciales mediante el uso
this
, pero eso no es significativamente recursivo.fuente