Generating combinations without recursion
GolfScript (44 42 32 chars)

n%){\,=}+[[]]@1/{`{1$+}+%}%;\,n*


This takes input on stdin as a list of newline-separated strings followed by a line containing the desired subset size. It assumes that none of the input strings is empty. It takes some inspiration from Howard's solution, and can be shortened by two chars if using his input format:

~{\,=}+[[]]@1/{`{1$+}+%}%;\,n*


Output is a newline separated list of concatenations.

E.g.

$ golfscript.rb subcombo.gs &lt;&lt;END
&gt; a
&gt; b
&gt; c
&gt; 2
&gt; END
ab
ac
bc


Note: this uses a horribly inefficient algorithm. A much nicer implementation in terms of performance is (62 61 chars)

n%)~\:S;2\?({2S,?&lt;}{:s.~)&amp;.s+.s^@4*/|}/{:x;S{;x.2/:x;1&amp;},}%n*


which uses Gosper's hack.