擅长:python、mysql、java
<p>您的版本依赖于<code>findResult()</code>的返回值在这里返回一个布尔值:</p>
<pre><code>gg,prog = findResult(s[i:len(s)], goal / num,prog+"*"+str(num)) or findResult(s[i:len(s)], goal - num,prog+"+"+str(num))
</code></pre>
<p>注意这个表达式中的<code>or</code>;<code>(False, somestring)</code>或<code>(True, somestring)</code>总是正确的!这是因为非空元组总是被认为是真的。你知道吗</p>
<p>你需要把它分开:</p>
<pre><code>if goal%num == 0:
gg,prog = findResult(s[i:len(s)], goal / num,prog+"*"+str(num))
if not gg:
gg, prog = findResult(s[i:len(s)], goal - num,prog+"+"+str(num))
</code></pre>
<p>注意,使用<code>gg == False</code>测试假值并不被认为是Pythonic。改用<code>not gg</code>。你知道吗</p>