Funcion recursiva

Iniciado por Albertocn, 19 Febrero 2014, 04:02 AM

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

Albertocn

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.

#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");
}


Albertocn

Este es el codigo, no el anterior.
#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");
}

eferion

int factorial(int n)

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

BlackM4ster

#4
Te falta un paréntesis en
printf("El factorial es %d", factorial(n));
Y la función parece estar correctamente implementada :huh:
- Pásate por mi web -
https://codeisc.com

BlackM4ster

Si, la he probado, y definitivamente funciona bien

Código (cpp) [Seleccionar]
#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;
}

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


Ingresa un numero del cual desees obtener su factorial: 7

El factorial es 5040
Presione una tecla para continuar . . .
- Pásate por mi web -
https://codeisc.com

Albertocn

¿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.

eferion

Cita de: 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.

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

BlackM4ster

- Pásate por mi web -
https://codeisc.com

leosansan

#9
Cita de: 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.


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 (cpp) [Seleccionar]
#include <stdio.h>

int factorial(int n) {

if(n<=1){
    printf("1");
    return 1;
}

else if(n>1){
      printf("%d*",n);
      return n*factorial(n-1);
}
}

int main(){
int n;
printf("Ingresa un numero del cual desees obtener su factorial: ");
scanf("%d",&n);
if(n<0){
    printf("El numero ha de ser mayor o igual a cero");
    return 1;
}
printf("\nEl factorial de %d es: %d! = ",n,n);
printf(" = %d\n", factorial(n));
return 0;
}



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