Sábado 14 de Diciembre de 2024, 10:37
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Ayuda Con Recursividad
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ayuda Con Recursividad (Leído 5786 veces)
abimmas
Nuevo Miembro
Mensajes: 1
Ayuda Con Recursividad
«
en:
Martes 17 de Mayo de 2005, 15:08 »
0
bueno antes que nada un saludo a toda la comunidad
pues he aqui que me he encontrado con un par
de problemas, necesito hacer un par de programas que son sencillos la potencia
de un numero X^Y y un programa que calcure el maximo comun divisor de un numero....
El problema aqui esque debe de ser por el metodo de recursividad, y no tengo
idea de como se haga eso alguien podria ayudarme ? ? ?
segun yo la tirada es hacerlo asi pero me marca errores..
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr();
int n;
int p;
int res;
int potencia(int n);
printf("Programa para calcular la potencia de un numero por el metodo de recursividad. /n");
printf("\nDame el n£mero: ");
scanf("%d",&n);
printf("\nDame la potencia a elevar: ");
scanf("%d",&p);
res=potencia(n);
printf("\n la potencia es: %d",res);
getch();
}
potencia(int n,p)
{
if(p>0)
n;
return(1);
}
{
else
return(n*n(p-1));
}
Tweet
shakka
Miembro HIPER activo
Mensajes: 679
Nacionalidad:
Re: Ayuda Con Recursividad
«
Respuesta #1 en:
Martes 17 de Mayo de 2005, 17:00 »
0
En primer lugar estas tratando de capturar una variable entero usando formato decimal:
int n;
...
scanf("%d",&n);
deberias usar un double n;
igual con la variable p, res... o en su efecto si debieran ser enteros
scanf("%i",&n);
ademas a la funcion potencia, en la definicion le agregaste un parametro mas.
(p).
potencia(int n,p)
{
...
Que al parecer la quieres usar como una variable local con respecto a la funcion.
//podria ser...
potencia(int n)
{
int p;//si fuera el caso
..pero si la quieres como parametro entonces debes declaras explicitamente su tipo
potencia(int n,int p)
{
...
y que valor retornara en caso de ser por cola
int
potencia(int n,int p)
{
o por boca
void potencia(int n,int p, int &retorno)
{
//en cuanto a la definicion de la funcion
...
//mmmm.. la veo un poco confusa
{
if(p>0)//falta una llave
->{
n;
return(1);
}//?
{
else
return(n*n(p-1));
}
//?*/?¿ç$·2#
//bueno el remiendo quedaria asi si es lo que pensabas hacer
..
{//abre potencia
if(p>0)
{
n;
return(1);
}
else
{
return(n*n(p-1));
}
}//cierra potencia
revisa y despues me cuentas!!
blog
http://blog.mbrenes.com
niofis
Nuevo Miembro
Mensajes: 9
Re: Ayuda Con Recursividad
«
Respuesta #2 en:
Viernes 17 de Junio de 2005, 20:15 »
0
Hola, tu funcion de potencia no está bien definida, no calcula potencias ni es recursiva, lo revisé y quedaria algo asi:
Citar
double potencia(double n, int p)
{
if(p==0)
{
return 1.0;
}
else
{
return n*(potencia(n,p-1));
}
}
Como puedes ver, no calculará potencias fraccionales, por lo que no puedes sacar raiz cuadrada elevando a 0.5.
Espero sea de tu ayuda...
niofis
fuhrer
Miembro MUY activo
Mensajes: 329
Nacionalidad:
Re: Ayuda Con Recursividad
«
Respuesta #3 en:
Sábado 18 de Junio de 2005, 18:08 »
0
Hola que tal.
Veo que ya te dieron varias soluciones para el calculo de la potencia, pero les falto decirte como obtener el MCD, bueno, para esto te recomiendo que utilices el algoritmo de Euclides para el calculo de MCD, este ya es recursivo y lo puedes encontrar fácilmente en la red.
Hasta luego.
Tienda México
Busquenos En Internet
Tuxiber
Dunadan
Nuevo Miembro
Mensajes: 20
Re: Ayuda Con Recursividad
«
Respuesta #4 en:
Domingo 26 de Junio de 2005, 05:36 »
0
Buenas a todos, este tema me viene bien ya que justamente hace poco me puse a ver recursividad.
Tengo una pregunta sobre le programa que hizo Niofis de la potencia, lo probe y funcionó; pero hay algo que no entiendo:
return n*(potencia(n,p-1));
Return por lo que tengo entendido sirve para devolver un valor y finalizar una función, pero lo que no sabia era que podia acumular un valor, como lo haria en este caso; si alguien me verifica este dato le estaría muy agradecido.
Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas. En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"
[size=109]H.P. Lovecraft "El Ceremonial"
[/size]
fuhrer
Miembro MUY activo
Mensajes: 329
Nacionalidad:
Re: Ayuda Con Recursividad
«
Respuesta #5 en:
Martes 28 de Junio de 2005, 00:48 »
0
Hola, que tal.
No es que el reurn acumule valores, si te das cuenta, el valor de retorno es el número n multiplicado por el valor de una función, que en este caso es ella misma, pero si lo ves como otra función tal vez podrias ver que es más claro.
El hacer este tipo de operaciones es lo escencial de la recursividad.
Hasta luego.
Tienda México
Busquenos En Internet
Tuxiber
Dunadan
Nuevo Miembro
Mensajes: 20
Re: Ayuda Con Recursividad
«
Respuesta #6 en:
Martes 28 de Junio de 2005, 23:05 »
0
Gracias fuhrer, ahora entendí, pero una cosa más, la función haría n*n*n*..., hasta que se cumpla la condición en ese caso haría return 1.0, pero que ocurriría en ese caso? la "n" que se fue acumulando en el anterior return se multiplica con el 1.0 este para dar el resultado de la potencia? Disculpen mis preguntas pero no me gusta quedarme con la duda por más boba que sea.
Saludos.
"Desde antaño se dice que el espíritu que al demonio se ha vendido no se apresura en dejar la envoltura de la carne, sino que alimenta y enseña al mismo gusano que roe, hasta que desde la corrupción emerge una vida terrible, y las criaturas que con carroña de la tierra se alimentan se multiplican a escondidas para hostigarla, y se hacen monstruosas para infestarlas. En secreto son excavadas interminables galerías donde debían bastar los poros de la tierra, y unas criaturas que sólo debían arrastrarse han aprendido a caminar"
[size=109]H.P. Lovecraft "El Ceremonial"
[/size]
fuhrer
Miembro MUY activo
Mensajes: 329
Nacionalidad:
Re: Ayuda Con Recursividad
«
Respuesta #7 en:
Miércoles 29 de Junio de 2005, 21:23 »
0
Si, lo que hace esa función es
Tienda México
Busquenos En Internet
Tuxiber
fuhrer
Miembro MUY activo
Mensajes: 329
Nacionalidad:
Re: Ayuda Con Recursividad
«
Respuesta #8 en:
Miércoles 29 de Junio de 2005, 21:25 »
0
Si, lo que hace esa función es que al final va a hacer
n*n*n* . . . *n*n*1
, esto es, va a multipicar
p
veces
n
, dando como resultado
n
elevado a la potencia
p
.
Y no te preocupes por preguntar, eso es bueno y así aprendes mas.
Tienda México
Busquenos En Internet
Tuxiber
_HEAVY_
Nuevo Miembro
Mensajes: 5
Re: Ayuda Con Recursividad
«
Respuesta #9 en:
Viernes 15 de Julio de 2005, 18:23 »
0
Aqui esta el del MCD
Código: Text
int MCD(int x,int y){
int r; // Algoritmo de Euclides
r=x%y; // r = residuo( a / b)
x=y; // x <--- y
y=r; // y <----r
if (!y) // el resultado es x (el ultimo valor mientras y <> 0
return x;
else
return MCD(x,y);
}
Y para cuando era la tarea, espero q todavia este a tiempo
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Ayuda Con Recursividad