One way: recursion over the flattened length of the table, i.e., to produce sequences of length rc.
- Base case: e(1,n), the contingency sequence with 1 element, contains just the grand total, n.
- Step case: to compute e(l,n) for l > 1, you need
- 0 conjoined with each sequence produced by e(l-1,n), i.e., all tables one size smaller with the originally desired grand total
- 1 conjoined with each e(l-1,n-1)
- 2 conjoined with each e(l-1,n-2)
- n-1 conjoined with each e(l-1,1)
- n conjoined with each e(l-1,0)
The number of 2×2 contingency tables seems to be given by the triangular pyramidal numbers, 1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 286, 364, 455, 560, 680, 816, 969, … which is a sum of triangular numbers.
There’s a bunch of work on the geometry of contingency tables. Fun stuff! (Ended up playing with this to generate stimuli for an experiment.)