Cubos de Nicoman

Iniciado por Beginner Web, 27 Mayo 2019, 23:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

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 (cpp) [Seleccionar]
int main()
{
int n=3, inp, cubo=0;
inp=n*(n-1);
for(int i=1,c=0;c<n;i+=2,c++)
cubo+=inp+i;
cout<<"Cubo: "<<cubo<<endl;
return 0;
}


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!  ;-)
7w7

K-YreX

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 (cpp) [Seleccionar]

    size_t cuboNicomanoRecurrente(unsigned numero, unsigned iteracion = 0, unsigned impar = 1){
        if(iteracion < numero-1)
            return numero*(numero-1) + impar + cuboNicomanoRecurrente(numero, iteracion+1, impar+2);
        return numero*(numero-1) + impar;
    }
Código (cpp) [Seleccionar]

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