Imports System
Imports System.Collections.Generic
Public Class AllWaysToWriteANumberAsSumOfTwoOrMoreInts_VB
Public Shared Sub printList(ByVal list As IList(Of Integer))
If list.Count <> 1 Then
For i As Integer = 0 To list.Count - 1
If i < list.Count - 1 Then
Console.Write(list(i) & " + ")
Else
Console.Write(list(i))
End If
Next
End If
Console.WriteLine()
End Sub
Public Shared Sub allWaysToWriteANumberAsSumOfTwoOrMoreInts(ByVal list As IList(Of Integer), ByVal i As Integer, ByVal n As Integer)
If n = 0 Then
printList(list)
End If
For j As Integer = i To n
list.Add(j)
allWaysToWriteANumberAsSumOfTwoOrMoreInts(list, j, n - j)
list.RemoveAt(list.Count - 1)
Next
End Sub
Public Shared Sub Main(ByVal args As String())
Dim n As Integer = 5
Dim list As IList(Of Integer) = New List(Of Integer)()
allWaysToWriteANumberAsSumOfTwoOrMoreInts(list, 1, n)
End Sub
End Class
' run:
'
' 1 + 1 + 1 + 1 + 1
' 1 + 1 + 1 + 2
' 1 + 1 + 3
' 1 + 2 + 2
' 1 + 4
' 2 + 3
'