Visual Basic.NET - Problema con desbordamiento

 
Vista:

Problema con desbordamiento

Publicado por Raul (1 intervención) el 12/10/2004 19:12:41
Hola

He creado un pequeño programa que te calcula el factorial de un numero. El problema es que si pongo un numero mas grande de 20 me da un error. La finalidad de este programa no es otra que medir los tiempos de proceso de distintas maquinas para realizar mediciones. Por eso tambien me interesaria que me explicarais como puedo obtener el tiempo de ejecucion. Os dejo pegado el codigo. Muchas gracias.

Module Module1

Dim resultado As Long = 1

Sub Main()
Dim numero As Long
Console.WriteLine("CALCULO DEL FACTORIAL DE UN NÚMERO")
Console.WriteLine()
Console.Write("Introduce el numero: ")
numero = Console.ReadLine()
resultado = numero
Factorial(numero)
Console.WriteLine()
Console.Write("El Factorial de {0} es: {1}", numero, resultado)
Console.ReadLine()
End Sub
Sub Factorial(ByVal numero As Long)
If (numero = 1) Then
resultado = resultado * 1
Else
resultado = resultado * (numero - 1)
Factorial(numero - 1)
End If
End Sub

End Module
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con desbordamiento

Publicado por Edgar (1501 intervenciones) el 12/10/2004 20:10:18
Hola

El error debe de ocurrir porque el factorial de 20 es un numero muy grande para ser representado en un número de tipo long

Ahora, para medir el tiempo de ejecución, puedes usar el método DateTime.Now para tomar una medición antes de empezar el cálculo y luego de finalizado tomas otra medición con la misma propiedad

De esta manera tendras 2 objetos de tipo DateTIme, ahora lo que haces es restarlo (d2-d1), esto te da un objeto de tipo TimeSpan que tiene la diferencia en dias, horas, minutos, segundos, etc de los dos objetos dateTime que restaste

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar