擅长:python、mysql、java
<p>通常情况下,递归函数更容易推理且更短。通常,您将从基本案例开始。在这里,您可以想象一个空字符串会产生什么样的函数。可能是<code>''</code></p>
<p>接下来,如果您的第一个字符不是<code>X</code>,您只需生成第一个字符加上递归调用其余字符的结果。如果它<strong>是</strong>和<code>X</code>,那么您将同时生成<code>1</code>+递归调用<strong>和</strong><code>0</code>+递归调用。比如:</p>
<pre><code>def combos(s):
if len(s) == 0:
yield ''
return
head, *tail = s
for combo in combos(tail):
if head == 'X':
yield '1'+ combo
yield '0'+ combo
else:
yield head + combo
s = '0XX1'
list(combos(s))
#['0111', '0011', '0101', '0001']
</code></pre>