Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 27 Mayo 2019, 23:31 pm



Título: Cubos de Nicoman
Publicado por: Beginner Web en 27 Mayo 2019, 23:31 pm
Hola estaba practicando unos ejercicios para no perder la logica y me tope con este algoritmo que calcula el cubo con el metodo de Nicoman

Código
  1. int main()
  2. {
  3. int n=3, inp, cubo=0;
  4. inp=n*(n-1);
  5. for(int i=1,c=0;c<n;i+=2,c++)
  6. cubo+=inp+i;
  7. cout<<"Cubo: "<<cubo<<endl;
  8. return 0;
  9. }

Lo que me da 27 por pantalla, inp me da 6 despues en ese bucle a cubo le asigno cubo(0)+=inpar(6)+i(1) ,luego cubo(7)+=inpar(6)+i(3) y finalmente cubo(16)+=inpar(6)+i(5), que me da un total de 27;

Queria hacerlo con una función recursiva y bueno necesito ayuda jeje!  ;-)


Título: Re: Cubos de Nicoman
Publicado por: K-YreX en 28 Mayo 2019, 14:59 pm
Para hacer una recurrencia debemos ver qué variables se van modificando en cada iteración y cuál es la condición de salida.
  • Condición de salida (c >= n)
  • Variables que se modifican: <i> <c>

Ahora las variables que se van modificando las tenemos que incluir como parámetros y el bucle lo tenemos que convertir en un condicional con llamadas recursivas.
Código
  1. size_t cuboNicomanoRecurrente(unsigned numero, unsigned iteracion = 0, unsigned impar = 1){
  2.    if(iteracion < numero-1)
  3.        return numero*(numero-1) + impar + cuboNicomanoRecurrente(numero, iteracion+1, impar+2);
  4.    return numero*(numero-1) + impar;
  5. }