Foros del Web » Programando para Internet » Python »

factorial de un numero

Estas en el tema de factorial de un numero en el foro de Python en Foros del Web. Necesito hacer un programa que halle el factorial de cualquier numero. Lo he hecho con un while. Introduzco un entero mayor que 1,entra en un ...
  #1 (permalink)  
Antiguo 07/04/2014, 12:02
Avatar de boronix  
Fecha de Ingreso: enero-2013
Ubicación: España
Mensajes: 17
Antigüedad: 11 años, 2 meses
Puntos: 0
Pregunta factorial de un numero

Necesito hacer un programa que halle el factorial de cualquier numero. Lo he hecho con un while. Introduzco un entero mayor que 1,entra en un contador y le voy quitando un 1, asi hasta que c=1 y sale del contador. Como podria multiplicar los terminos entre si? o alguna sugerencia para esta mente de chorlito?
#################
Código Python:
Ver original
  1. c=int(input())
  2. while c>1:
  3.   c=c-1
  4.   print(c
#################
He probado con poner en la 3º linea c=(c-1)*c pero claro, se me disparan los numeros #ejem: 5>1 --> c=4*5--->c=20 y asi hasta el infinito.

Aqui he diseñado una funcion factorial. Tambien me da error.

Código Python:
Ver original
  1. def factorial(n):
  2.     if n==0:
  3.         return 1
  4.     else:
  5.         return n*factorial(n-1)
  6.     print factorial(4)

Última edición por AlvaroG; 08/04/2014 a las 12:21 Razón: coloreado de código
  #2 (permalink)  
Antiguo 07/04/2014, 13:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 18
Respuesta: factorial de un numero

Tienes que usar una variable auxiliar donde ir acumulando el resultado hasta que c sea igual a 1.

Usa la etiqueta Hightlight para insertar codigo en el foro, se ve mejor.
Saludos.
  #3 (permalink)  
Antiguo 08/04/2014, 12:24
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: factorial de un numero

Iterativo:

Código Python:
Ver original
  1. acum=1
  2. while c:
  3.    acum *= c
  4.    c -= 1

Recursivo
Código Python:
Ver original
  1. def factorial(n):
  2.     return n * factorial(n-1) if n > 1 else 1

:)

Etiquetas: factorial, ip, numero, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.