Function comb(n As Long, k As Long) As Long If k = 0 Or k = n Then comb = 1 Exit Function End If
/* if (k == 1) return n; */
comb = comb(n - 1, k - 1) + comb(n - 1, k) End Function
Function combination(n As Long, k As Long) As DWord Dim i As Long, j As Long Dim a[17] As DWord
If n - k < k Then k = n - k If k = 0 Then combination = 1 Exit Function End If
If k = 0 Then combination = n Exit Function End If
If k > 17 Then combination = 0 /* error */ Exit Function End If
For i = 1 To k-1 a[i] = i + 2 Next
For i = 3 To n - k + 1 a[0] = i For j = 1 To k a[j] = a[j] + a[j - 1] Next Next combination = a[k - 1] End Function
Const N = 8
Dim n As Long, k As Long
printf(Ex"\n k")
For k = 0 To N printf("%6d", k) Next
printf(Ex"\nn ")
For k = 0 To N printf("------") Next printf(Ex"\n")
For n = 0 To N printf("%d |", n) For k = 0 To n printf("%6d", comb(n, k)) Next printf(Ex"\n") Next
printf(Ex"\n k") For k = 0 To N printf("%6d", k) Next printf(Ex"\nn ") For k = 0 To N printf("------") Next printf(Ex"\n") For n = 0 To N printf("%d |", n) For k = 0 To n printf("%6lu", combination(n, k)) Next printf(Ex"\n") Next
For k = 0 To 17 printf(Ex"34C%-2d = %10lu\n", k, combination(34, k)) Next