Utilizamos cookies propias y de terceros para mejorar la experiencia de navegación, y ofrecer contenidos y publicidad de interés. Al continuar con la navegación entendemos que se acepta nuestra política de cookies.
Me parece mucho más simple hacer:
Public Function Fact(n As Integer) As Double
If n <= 1 Then Fact = 1 Else: Fact = n * Fact(n - 1)
End Function
Y en sólo una línea de código calculás recursivamente el factorial de un número...
Demasiado splash y help y gráficos para algo tan simple como calcular el factorial de un número, estás desperdiciando talento.
Saludos
Quizas si tenga demasiado splash, y otras cosas, y el código quedaría mucho mas claro como tu dices, pero como tú dices pero consumiría muchos recursos para enteros altos y sería mas lento, de todas formas el código queda mas claro de esta manera:
Dim cont As Integer
Dim foc As Double
foc = 1
Label2.Caption = "1"
For cont = 2 To CInt(Me.txtm.Text)
foc = foc * cont
Label2.Caption = cont & "*" & Label2.Caption
Next cont
labresul.Caption = foc
Private Sub Cmd_Calcular_Click()
Resultado = 1
For i = 2 To Txt_numero.Text
Resultado = Resultado * i
Next i
Lbl_Resultado = Resultado
End Sub
.................................. :P
Demasiado código para nada, sobra la mitad. Qué pasa si el usuario teclea letras? que falla. Qué pasa si el usuario teclea un numero demasiado largo? que falla.
Conclusión no vale para nada.
hay un mito que si entendes las cosas de matematica son un capo, un genio...por favor!!!!!!!!!!!!!!!!!!!!!!.....la matematica es un conjunto de reglas que si las seguis es muy sencillo calcular....ahhh, cais me olvido, codigo muy muy malo
Me van a disculpar, pero las críticas hechas al código de "paco" no tienen mucho fundamento porque ninguno aporta nada mejor. Me explico. Los códigos "aportados" como corrección a paco, llegan al mismo resultado... ninguno calcula el factorial de una crifra superior a 170. Moraleja: Para hablar y comer pescado... hay que tener mucho cuidado.
Comentarios sobre la versión: Versión 1 (6)
Public Function Fact(n As Integer) As Double
If n <= 1 Then Fact = 1 Else: Fact = n * Fact(n - 1)
End Function
Y en sólo una línea de código calculás recursivamente el factorial de un número...
Demasiado splash y help y gráficos para algo tan simple como calcular el factorial de un número, estás desperdiciando talento.
Saludos
Dim cont As Integer
Dim foc As Double
foc = 1
Label2.Caption = "1"
For cont = 2 To CInt(Me.txtm.Text)
foc = foc * cont
Label2.Caption = cont & "*" & Label2.Caption
Next cont
labresul.Caption = foc
Resultado = 1
For i = 2 To Txt_numero.Text
Resultado = Resultado * i
Next i
Lbl_Resultado = Resultado
End Sub
.................................. :P
Conclusión no vale para nada.