elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con función recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda con función recursiva  (Leído 7,719 veces)
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Duda con función recursiva
« en: 7 Junio 2012, 15:29 pm »

Hola.

Tengo un ejercicio que dice:

Implemente una función recursiva (y todo lo necesario para que el programa funcione) que calcule, dado un vector de enteros y un umbral, la suma de todos los elementos del vector que son mayores que el umbral. La cabecera de la función recursiva debe ser la siguiente:

void SumaUmbral(int *v, int tam, int umbral, int *suma);

El vector debe ser creado con memoria dinámica y pedido al usuario por la consola. La variable suma se pasa por referencia. La variable tam contiene el tamaño del vector.


El problema que tengo es que yo siempre he pensado que las funciones recursivas deben devolver algo... ¿Cómo va a ser void?

Saludos, y muchas gracias.


En línea

kingdarnakes

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Duda con función recursiva
« Respuesta #1 en: 7 Junio 2012, 15:42 pm »

Te has respondido tu mismo:
Citar
El vector debe ser creado con memoria dinámica y pedido al usuario por la consola. La variable suma se pasa por referencia. La variable tam contiene el tamaño del vector.


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Duda con función recursiva
« Respuesta #2 en: 7 Junio 2012, 15:48 pm »

Me refiero a que yo las funciones recursivas las he hecho siempre así:


if(CASO BASE) return ALGO; (matriz, vector, una variable...)

else
{
...
...
return NombreFunciónRecursiva (parámetros);
}

Gracias.
En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: Duda con función recursiva
« Respuesta #3 en: 7 Junio 2012, 16:03 pm »

Por definición, las funciones siempre deberían devolver algo, si.

Es raro.

No sabría decirte cómo va eso exactamente...

¿Estás seguro de que copiaste bien el enunciado del ejercicio?
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Duda con función recursiva
« Respuesta #4 en: 7 Junio 2012, 16:08 pm »

Pues le ha caído el ejercicio a mi hermana en un examen que ha hecho hoy, y el prototipo era ese (lo ha comprobado muchas veces, y por eso lo he preguntado).

Muchas gracias por aclararme la duda.

Saludos.
En línea

kingdarnakes

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Duda con función recursiva
« Respuesta #5 en: 7 Junio 2012, 16:28 pm »

Por definición, las funciones siempre deberían devolver algo, si.

Es raro.

No sabría decirte cómo va eso exactamente...

¿Estás seguro de que copiaste bien el enunciado del ejercicio?

Amigo, estas equivocado que devuelve una función void?, en otros lenguajes se llaman procedimientos.

No te voy hacer la función para demostrártelo, pero creo que no tienes claro que significa que una variable se pase por referencia. Revisa ese concepto. El resto sería todo igual, buscas el caso base o los casos bases y ya esta.
En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Duda con función recursiva
« Respuesta #6 en: 7 Junio 2012, 16:34 pm »

Pasar una variable por referencia es pasar una copia del contenido de dicha variable, ¿no?

De ser así, además de que siempre he pensado que las funciones recursivas no podían ser void, aunque lo pudiera ser, no modificaría el contenido de *suma en main()...
En línea

Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: Duda con función recursiva
« Respuesta #7 en: 7 Junio 2012, 16:39 pm »

Pasar una variable por referencia es pasar una copia del contenido de dicha variable, ¿no?

No, lo que pasas es una dirección de puntero a la variable original.
En resumen, estás modificando sobre la variable original, no sobre una copia.

Citar
Amigo, estas equivocado que devuelve una función void?, en otros lenguajes se llaman procedimientos.

Cuando se me enseñó, en los enunciados se las llamaba procedimientos directamente, no "funciones que devuelven void".
« Última modificación: 7 Junio 2012, 16:43 pm por Saberuneko » En línea

0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Duda con función recursiva
« Respuesta #8 en: 7 Junio 2012, 16:41 pm »

Al contrario, pasas una copia de una variable cuando la pasas por valor, si la pasas por referencia el valor de la variable va a permanecer alterado cuando se vaya la funcion, y aunque la funcion en si no retorne nada, si va a modificar el contenido de la variable.

Saludos ;D
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Duda con función recursiva
« Respuesta #9 en: 7 Junio 2012, 16:44 pm »

Ah, sí, me he confundido y he puesto la definición del paso por valor...

Entonces, ¿se puede hacer la función recursiva que he mencionado usando void?

Muchas gracias.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Función recursiva de búsqueda.
Programación C/C++
APOKLIPTICO 1 2,827 Último mensaje 4 Junio 2010, 21:51 pm
por [D4N93R]
Ayuda con función recursiva.
Programación C/C++
Javi.24 1 2,466 Último mensaje 16 Junio 2012, 05:41 am
por GuzmanG
Problema función factorial recursiva
Java
Oblivi0n 1 2,276 Último mensaje 4 Octubre 2012, 19:03 pm
por die_guito
Pequeña duda con funcion recursiva
Programación C/C++
CCross 9 4,928 Último mensaje 19 Mayo 2013, 17:41 pm
por CCross
duda función recursiva
Programación C/C++
fernaEDLP 4 1,979 Último mensaje 30 Mayo 2019, 20:55 pm
por fernaEDLP
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines