Duda con función recursiva

Iniciado por DickGumshoe, 7 Junio 2012, 15:29 PM

0 Miembros y 2 Visitantes están viendo este tema.

Saberuneko

Si, haciendo la llamada al procedimiento tal como la harías con la función.
En vez de ponerla en el return, colocas la llamada (con los parámetros necesarios) dentro de una condición "if" a cumplir, sin más complicaciones.

DickGumshoe

Ah, vale, muchas gracias.

Pensaba que era así como lo has dicho, pero como la profesora de mi hermana siempre ha dicho y ha puesto en los apuntes y ejercicios funciones recursivas que devuelven, pues no estaba seguro de si se podía.

Saludos.

Saberuneko

Ahora que lo recuerdo, acuérdate también que en ANSI C, las funciones nunca devuelven void ni se les pasa valores por referencia.

Si devuelve void o se les pasa un valor por referencia, cae de cajón que es procedimiento. Mi error fue leer "función", y no mirar la cabecera que pusiste.

Un Saludo.

DickGumshoe


kingdarnakes

En C los procedimientos no existen, lo dije en mi primer mensaje en otros lenguajes.

Porque se le pase un valor "por referencia" ya es un procedimiento? Suponiendo que llamar un procedimiento a una función del tipo void.

int tarar(int * v);

Devuelve un valor luego ya no es void, y se le pasa un valor por "referencia".

Saberuneko

Si no me equivoco, según ANSI C. Es un procedimiento, si.
Tal vez esto es una colisión entre métodos de aprendizaje.

Yo solo cito lo que recuerdo haber aprendido.

¿Estás seguro de que estás hablando de ANSI C, conceptualmente?
(Sé que se llama function, de una forma u otra, pero conceptualmente, es o función, o procedimiento).

Ferno

Procedimiento no devuelve nada y se lo simula devolviendo void en el lenguaje C, más allá del pasaje por referencia o no. Sigue siendo una función pero "simula" un procedimiento propiamente dicho.
Por ejemplo, en lenguajes que si diferencian una función de un procedimiento (como Pascal) tanto a un procedimiento como a una función se le podía pasar un valor por referencia.