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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Listas + recursividad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Listas + recursividad  (Leído 1,907 veces)
Persephone

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Listas + recursividad
« en: 2 Noviembre 2019, 17:07 pm »

Hola! Estoy con un ejercicio de la universidad con listas y recursividad, hay que rellenar donde esta de color púrpura. Lo he sacado de forma iterativa pero con recursividad no tengo claro que sea de esta manera. Nos lo piden en formato algoritmico.
Pongo el enunciado: Rellena los recuadros para finalizar el diceño de la función recursiva sum_squares que calcula la suma de los n primeros números al cuadrado a partir de un número d.
       Ejemplo: sum_squares (4,3) devuelve 32+42+52+62=86

function sum_squares (n: integer, d: integer): integer
Pre: { 0 ≤ n, 0 < d }
var
           res: integer;
fvar
           if n = 0 then
                 break;
      else
                res :=  (d*d)  + sum_squares( n-1, d+1);
      end if
           return res;
end function

Gracias!


En línea

K-YreX
Moderador
***
Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Listas + recursividad
« Respuesta #1 en: 2 Noviembre 2019, 20:24 pm »

Bueno... antes de nada avisarte que este foro es específico para C/C++. Para cualquier otro tema como es el pseudocódigo, tienes el foro de "Programación General".

La segunda cosa a tratar es que entendía lo que querías decir hasta que has llegado al ejemplo... No puedes representar un ² como un 2 normal porque anda que no hay diferencia de 32 a 3²... :rolleyes:

Y por último, la función en cuestión. La función tiene dos parámetros el número inicial y la cantidad de sumandos que tendrá la operación. Si te fijas, tienes (4,3) que significa sumar 4 números al cuadrado empezando por el 3. Cuando ya tengas sumado el 3² te quedarás por sumar 3 números más y el primero será el 4 porque el 3 ya está sumado. Por lo que empezaría siendo (4,3) y después sería (3,4), después (2,5), luego (1,6) y finalmente (0,7) que como con el 0 haces un break no se llegaría a sumar el 7² por lo que parece que de primeras está bien.

Sin embargo el valor de <res> en el último caso es desconocido por lo que te podría salir cualquier cosa y no te daría el resultado esperado. Tienes dos formas de solucionar esto, una es asignando el valor 0 a <res> al principio de la función para que así en el caso base (n == 0) se devuelva un 0 que no afecta a la suma o usar un <return> en vez de un <break>
Código:
SI n == 0 ENTONCES
    return 0
FIN SI
return (d*d) + sum_squares(n-1, d+1)
Al usar <return> el <else> se vuelve innecesario y la creación de la variable <res> también.


En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Persephone

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Re: Listas + recursividad
« Respuesta #2 en: 3 Noviembre 2019, 08:08 am »

Es verdad! no me fijé que al pegar se quedaba el 2 así jeje
Lo del pseudocódigo lo tendré en cuenta para la siguiente, y gracias! Tiene sentido, voy a probar las dos maneras  ;D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Recursividad
Java
rjrn 8 9,779 Último mensaje 17 Marzo 2009, 19:33 pm
por weirdtyping
recursividad
Ejercicios
Choclito 0 3,568 Último mensaje 12 Mayo 2009, 04:47 am
por Choclito
Uso de Listas: Subprograma que lea 2 listas y forme una.
Dudas Generales
hbenitez 2 3,320 Último mensaje 8 Agosto 2010, 20:11 pm
por hbenitez
Ayuda Acerca De Listas y Listas Circulares (Revienta Memoria :S)
Programación C/C++
Gerik 0 5,180 Último mensaje 12 Septiembre 2010, 01:49 am
por Gerik
duda con recursividad y listas
Programación C/C++
elbuitre86 8 2,942 Último mensaje 3 Julio 2012, 18:35 pm
por elbuitre86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines