擅长:python、mysql、java
<pre><code>pattern = "40aa"
options = [7, 8]
def replace(left, right):
if len(right) > 0:
if right[0] == "a":
results = []
for i in options:
results.extend(replace(left + str(i), right[1:]))
return results
else:
return replace(left + right[0], right[1:])
else:
return [left]
print replace("", pattern)
</code></pre>
<p>换言之,调用函数时使用模式中已处理的部分和剩余部分。如果下一个模式的字符是数字,它将从模式传递到结果。如果它是“a”,它将被所有选项一步一步地替换,剩下的模式将被递归处理。你知道吗</p>