/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

recursividad...

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
w_elfo



Registrado: 22 Nov 2004
Mensajes: 7

MensajePublicado: 02/02/2005 10:54 am
Título: recursividad...

Hola, tengo un problema con una funcion... lo que quiero hacer es una función recursiva que me calcule la potencia de un numero... (el chiste es no usar la funcion pow() Sad ), pero aparte tengo q mandar los parametros por referencia.. ahi es donde tengo el problema.

El codigo de la funcion con paso por valor es el siguiente:

Código:

#include <conio.h>
#include <stdio.h>

float potencia( int a, int b)
{
   if (b==0)
      return 1;
   else
      return (a * potencia(a, b-1));
}

void main()
{
   int c, d;
   float r;
   clrscr();
   printf("c:");
   scanf("%d", &c);
   printf("d:");
   scanf("%d", &d);
   r = potencia(c,d);
   printf("R= %f", r);
   getch();
}


El problema es que no he encontrado la forma de hacerlo pasar por referencia... me salen muchos errores!!! Confused

Saludos
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3602
Ubicación: Mexico

MensajePublicado: 02/02/2005 11:42 am
Título:

Si quieres pasar los parametros por 'referencia' tienes que modificar tu programa, los pasos a realizar para el paso por referencia son:

* En la definicion de la funcion indica que el parametro es un puntero, para esto precedes el nombre del parametro con un asterisco.

* Dentro de la funcion el nombre del parametro tambien debe ser precedido por un asterisco.

* Cuando llamas a la funcion utilizas el operador 'direccion de' (el caracter '&').

Una posible solucion es:

Código:
#include <conio.h>
#include <stdio.h>

float potencia(int a, int *b){
   
   if (*b == 0)
      return 1;
   else {
      (*b)--;
      return (a * potencia(a, b));
   }
}

int main(void){
   
   int c, d;
   float r;
   
   clrscr();
   
   printf("c:");
   scanf("%d", &c);
   
   printf("d:");
   scanf("%d", &d);
   
   r = potencia(c, &d);
   printf("R= %f\n", r);
   getch();
   
   return 0;
}


Un saludo
Volver arriba
w_elfo



Registrado: 22 Nov 2004
Mensajes: 7

MensajePublicado: 02/02/2005 12:30 pm
Título:

Gracias, me faltaba poner lo del *b--, por eso me marcaba errores

De cualquier forma gracias por la ayuda

Very Happy
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com