擅长:python、mysql、java
<p>较短的递归方法:</p>
<pre><code>def split(d):
yield tuple(d)
if len(d) > 1:
yield from [b for i in range(len(d)-1) for b in split(d[:i]+[d[i]+d[i+1]]+d[i+2:])]
val = 3147
print(set(split(list(map(str, str(val))))))
</code></pre>
<p>输出:</p>
<pre><code>{('3', '1', '4', '7'),
('3', '1', '47'),
('3', '147'),
('31', '4', '7'),
('3147',),
('314', '7'),
('3', '14', '7'),
('31', '47')}
</code></pre>