75 lines
1.9 KiB
VB.net
75 lines
1.9 KiB
VB.net
Module Module1
|
|
|
|
Function Factorial(n As Double) As Double
|
|
If n < 1 Then
|
|
Return 1
|
|
End If
|
|
|
|
Dim result = 1.0
|
|
For i = 1 To n
|
|
result = result * i
|
|
Next
|
|
|
|
Return result
|
|
End Function
|
|
|
|
Function FirstOption(n As Double) As Double
|
|
Return Factorial(2 * n) / (Factorial(n + 1) * Factorial(n))
|
|
End Function
|
|
|
|
Function SecondOption(n As Double) As Double
|
|
If n = 0 Then
|
|
Return 1
|
|
End If
|
|
|
|
Dim sum = 0
|
|
For i = 0 To n - 1
|
|
sum = sum + SecondOption(i) * SecondOption((n - 1) - i)
|
|
Next
|
|
Return sum
|
|
End Function
|
|
|
|
Function ThirdOption(n As Double) As Double
|
|
If n = 0 Then
|
|
Return 1
|
|
End If
|
|
|
|
Return ((2 * (2 * n - 1)) / (n + 1)) * ThirdOption(n - 1)
|
|
End Function
|
|
|
|
Sub Main()
|
|
Const MaxCatalanNumber = 15
|
|
|
|
Dim initial As DateTime
|
|
Dim final As DateTime
|
|
Dim ts As TimeSpan
|
|
|
|
initial = DateTime.Now
|
|
For i = 0 To MaxCatalanNumber
|
|
Console.WriteLine("CatalanNumber({0}:{1})", i, FirstOption(i))
|
|
Next
|
|
final = DateTime.Now
|
|
ts = final - initial
|
|
Console.WriteLine("It took {0}.{1} to execute", ts.Seconds, ts.Milliseconds)
|
|
Console.WriteLine()
|
|
|
|
initial = DateTime.Now
|
|
For i = 0 To MaxCatalanNumber
|
|
Console.WriteLine("CatalanNumber({0}:{1})", i, SecondOption(i))
|
|
Next
|
|
final = DateTime.Now
|
|
ts = final - initial
|
|
Console.WriteLine("It took {0}.{1} to execute", ts.Seconds, ts.Milliseconds)
|
|
Console.WriteLine()
|
|
|
|
initial = DateTime.Now
|
|
For i = 0 To MaxCatalanNumber
|
|
Console.WriteLine("CatalanNumber({0}:{1})", i, ThirdOption(i))
|
|
Next
|
|
final = DateTime.Now
|
|
ts = final - initial
|
|
Console.WriteLine("It took {0}.{1} to execute", ts.Seconds, ts.Milliseconds)
|
|
End Sub
|
|
|
|
End Module
|