Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Albertocn en 19 Febrero 2014, 04:02 am



Título: Funcion recursiva
Publicado por: Albertocn en 19 Febrero 2014, 04:02 am
Hola qué tal, nuevamente yo por aquí, lo que pasa es que tengo un ligero problemilla con esta función, se supone que me debe dar el numero factorial de un numero que ingrese, pero no necesito que me imprima sólo el resultado, si no algo parecido a esto, se que va con un printf que se debe poner dentro de la función, el problema es que no me sale, esto es lo que llevo hasta el momento.
Si me pueden decir como insertar una imagen se los agradeceria mucho.

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


int factorial(int n)
{
 if(n<0)
return 0;
 else
 if(n>1)
return n*factorial(n-1);
 return 1;
 
}

void main()

{
int n;
printf("Ingresa un numero del cual desees obtener su factorial");
scanf("%d",&n);
factorial(n);
system("PAUSE");
}


Título: Re: Funcion recursiva
Publicado por: Albertocn en 19 Febrero 2014, 04:03 am
(http://file:///C:/Users/Gateway/Pictures/Factorial.jpg)


Título: Re: Funcion recursiva
Publicado por: Albertocn en 19 Febrero 2014, 04:06 am
Este es el codigo, no el anterior.
Código:
#include <stdlib.h>
#include <stdio.h>


int factorial(int n)
{
 if(n<0)
return 0;
 else
 if(n>1)
return n*factorial(n-1);
 return 1;
 
}

void main()

{
int n;
printf("Ingresa un numero del cual desees obtener su factorial");
scanf("%d",&n);
printf("El factorial es %d", factorial(n);
system("PAUSE");
}


Título: Re: Funcion recursiva
Publicado por: eferion en 19 Febrero 2014, 08:24 am
Código
  1. int factorial(int n)

La función factorial te devuelve un entero... recógelo en el main y muéstralo con un printf.


Título: Re: Funcion recursiva
Publicado por: BlackM4ster en 19 Febrero 2014, 08:32 am
Te falta un paréntesis en
printf("El factorial es %d", factorial(n));
Y la función parece estar correctamente implementada :huh:


Título: Re: Funcion recursiva
Publicado por: BlackM4ster en 19 Febrero 2014, 08:39 am
Si, la he probado, y definitivamente funciona bien

Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4.  
  5. int factorial(int n) {
  6. if(n<0)
  7. return 0;
  8. else
  9. if(n>1)
  10. return n*factorial(n-1);
  11. return 1;
  12. }
  13.  
  14. int main(){
  15. int n;
  16. printf("Ingresa un numero del cual desees obtener su factorial: ");
  17. scanf("%d",&n);
  18. printf("\nEl factorial es %d\n", factorial(n));
  19. system("PAUSE");
  20. }

Código:
Ingresa un numero del cual desees obtener su factorial: 7

El factorial es 5040
Presione una tecla para continuar . . .


Título: Re: Funcion recursiva
Publicado por: Albertocn en 19 Febrero 2014, 14:46 pm
¿Y cómo le hago para que en vez de arrojarme el resultado, me arroje el procedimiento del factorial paso por paso? Es para dar a entender al que ve el resultado en pantalla cómo funciona el factorial de un numero.


Título: Re: Funcion recursiva
Publicado por: eferion en 19 Febrero 2014, 14:47 pm
¿Y cómo le hago para que en vez de arrojarme el resultado, me arroje el procedimiento del factorial paso por paso? Es para dar a entender al que ve el resultado en pantalla cómo funciona el factorial de un numero.

Pon un printf dentro de la función factorial... pero dudo que eso te aporte algo.


Título: Re: Funcion recursiva
Publicado por: BlackM4ster en 19 Febrero 2014, 19:14 pm
._____.


Título: Re: Funcion recursiva
Publicado por: leosansan en 19 Febrero 2014, 19:50 pm
¿Y cómo le hago para que en vez de arrojarme el resultado, me arroje el procedimiento del factorial paso por paso? Es para dar a entender al que ve el resultado en pantalla cómo funciona el factorial de un numero.


Citar
Ingresa un numero del cual desees obtener su factorial: 8

El factorial de 8 es: 8! = 8*7*6*5*4*3*2*1 = 40320
Presione una tecla para continuar . . .


Aporta qué diablos calcula factorial para alguien que no lo sepa:

Código
  1. #include <stdio.h>
  2.  
  3. int factorial(int n) {
  4.  
  5. if(n<=1){
  6.    printf("1");
  7.    return 1;
  8. }
  9.  
  10. else if(n>1){
  11.      printf("%d*",n);
  12.      return n*factorial(n-1);
  13. }
  14. }
  15.  
  16. int main(){
  17. int n;
  18. printf("Ingresa un numero del cual desees obtener su factorial: ");
  19. scanf("%d",&n);
  20. if(n<0){
  21.    printf("El numero ha de ser mayor o igual a cero");
  22.    return 1;
  23. }
  24. printf("\nEl factorial de %d es: %d! = ",n,n);
  25. printf(" = %d\n", factorial(n));
  26. return 0;
  27. }


¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)