6 jun
2017

Duda sobre la sentencia "return" en recursividad - C

Estoy estudiando el tema de recursividad y tengo dos dudas que consisten en lo siguiente:

1.- He visto que normalmente al llamar dentro de si misma a una funcion se hace por medio de return, algo como lo siguiente:

return fibonacci(n-1) + fibonacci(n-2);

Mi duda es si aún se considera recursividad si se llama a si misma sin un return, por ejemplo:

void funcionRecursiva (/*Parámetros*/)
{
    //Caso base
    if (/*Alguna condicional aquí*/) return;

    /*
     *
     * Codigo
     *
    */

    funcionRecursiva (/*Parámetros*/);
}

La función de arriba se llamaría a si misma hasta que se llegara a cumplir una cierta condición (caso base), y si no se cumple, se llama a si misma hasta que se cumpla, pero no se llama a si misma con un return, ¿Eso hace que ya no "cuente" como recursividad?

2.- Si lo anterior no "cuenta" como recursividad, ¿Contaría si se cambia a algo como esto?:

void funcionRecursiva (/*Parámetros*/)
{
    //Caso base
    if (/*Alguna condicional aquí*/) return;

    /*
     *
     * Codigo
     *
    */

    return funcionRecursiva (/*Parámetros*/);
}

¿Es correcto llamar a una funcion dentro de si misma usando un return si dicha funcion es de tipo void?

Agradezco toda la ayuda y dirección que pudieran darme. Gracias.

COMENTARIOS

DEJA TU COMENTARIO

© 2017 website by Rubit Corporation