• Viernes 8 de Noviembre de 2024, 16:45

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - davinci300

Páginas: [1]
1
C/C++ / Re: piramide n capas recursividad
« en: Lunes 25 de Abril de 2011, 21:55 »
Muchas gracias!!
Me ha sido de gran ayuda para entenderlo, me estaba volviendo loco, al final lo he hecho asi:
#include <iostream>
 using namespace std;

 
int rec(int n){
   

 if (n<1){
    return 0;
 }    else{
    if (n==1){
       return 1;
    }    else
       return 2*rec(n-1)+1;
 }

 }

   int main(){    
      int num; //declarar variable    
   cout<<"Introduce el numero de capas: ";    
   cin>>num; //guardar el numero en 'num'    
   cout<<"Resultado: "<<rec(num);
   cout<<endl;
   system("pause");
   return 0;
   
   }

Esto ya funciona, ahora lo que no entiendo es la segunda parte del ejercicio:
Escribe una función recursiva final con el mismo comportamiento que la función recursiva
del ejercicio anterior.
PISTAS: Recuerda que necesitarás dos funciones, y una de las dos funciones deberá tener un
parámetro (e.g. llamado “acum”) que acumule el resultado.
Recursiva final???? en el libro no sale nada de eso.
Lo que ya he hecho no es recursiva final??

2
C/C++ / piramide n capas recursividad
« en: Lunes 25 de Abril de 2011, 17:42 »
piramide n capas recursiva

--------------------------------------------------------------------------------
Hola, me llamo David y estudio primero de Ingeniería Informática en la U.M.
Me han puesto un ejercicio de recursividad con c++ que no me entra ni con calzador.
Me piden que haga un programa que devuelva la cantidad de ladrillos en función del número de capas de la pirámide,me explico, es una sucesión en la que cada cifra se duplíca y se incrementa en uno:
1, 3, 7, 15, 31, 63...n.
Con esto tengo que si introduzco 5 (capas), retorne 31(ladrillos).
Como ya he dicho es una sucesión y hacerlo con iteración es muy sencillo, solo hay que introducir dos variables(n y r por ejemplo) y poner como condicion el termino general de la sucesion, que en este caso seria r=2^n-1. es decir:

int main(int n, int r=1){
cout<< "introduzca el numero de capas de la piramide";
cin>>n;
for (r; r<=2^n-1; r++);
if (r=2^n-1){
cout<<r;
}
Ya lo he probado y funciona, pero no es lo que me piden, me lo piden de forma recursiva y no se como hacerlo.
He mirado ejemplos de sucesiones con recursividad, pero ninguna se parece a esta.
Gracias de antemano.

3
C/C++ / Re: Trinagulo de Floyd, por numero de filas
« en: Miércoles 19 de Enero de 2011, 16:46 »
No se que condición pongo mal, pero siempre me imprime una cifra más de la que quiero. Os pongo el codigo fuente, a ver si sabéis que es lo que hago mal.
Gracias de antemano.

// TRIANGULO DE FLOYD en C++, David JIménez Marco
#include<iostream>

using namespace std;

int main()
{
   cout<< " TRIANGULO DE FLOYD,David Jimenez Marco,grado en Ingenieria Informatica,UDIMA";
   cout<< "*******************************************************************************";
   cout<< endl;
   //Introducimos las variables
   int k=0,i,linea=1,ultimo=1;
// Leemos el número de filas del triangulo de Floyd
   cout<<"Introduce el numero de filas:";
   cin >> i;

   cout<< endl;
// En la iteracion, indicamos  cuando tenemos que hacer el salto de linea

   
   
 
   do {k++;
 
   
   
         if (k>ultimo)
         {
           linea=linea+1;
           ultimo=ultimo+linea;
           cout<<endl;
         }
   cout<<   k   ;
   }while    (linea<=i);     
    
     
 
 
   

   cout << endl;
   system("pause");
   
}

4
C/C++ / Trinagulo de Floyd, por numero de filas
« en: Miércoles 19 de Enero de 2011, 16:44 »
Para hacer un triangulo de Floyd ingresando un numero dado de filas completas y no la última cifra.

Páginas: [1]