Imports System
Namespace Class_Recursive
Public Class CRecursive
Public Function RecursiveFib(ByVal num As Decimal) As Decimal
If num <= 2 Then
Return 1
Else
Return RecursiveFib(num - 1) + RecursiveFib(num - 2)
End If
End Function
Public Function RecursiveFact(ByVal n As Integer) As Integer
If n = 0 Then
Return 1
End If
Return n * RecursiveFact(n - 1)
End Function
Public Function RecursiveCountDigits(ByVal n As Integer) As Integer
If n = 0 Then
Return 0
End If
Return (1 + RecursiveCountDigits(n / 10))
End Function
Public Function IterationFib(ByVal num As Decimal) As Decimal
Dim num1 As Integer = 0
Dim num2 As Integer = 1
If num <= 2 Then
Return 1
End If
For i As Integer = 1 To num - 1
Dim tmp As Integer = num1
num1 = num2
num2 = tmp + num2
Next
Return num2
End Function
End Class
Public Class Class1
Public Shared Sub Main(ByVal args As String())
Dim cr As CRecursive = New CRecursive()
Console.WriteLine("RecursiveFact 5: " & cr.RecursiveFact(5))
Console.WriteLine("RecursiveCountDigits 123456: " & cr.RecursiveCountDigits(123456))
Console.WriteLine("RecursiveFib 20: " & cr.RecursiveFib(20))
Console.WriteLine("IterationFib 20: " & cr.IterationFib(20))
End Sub
End Class
End Namespace
' run:
'
' RecursiveFact 5: 120
' RecursiveCountDigits 123456: 6
' RecursiveFib 20: 6765
' IterationFib 20: 6765
'