擅长:python、mysql、java
<p>你可能和</p>
<pre><code> ...
roots4(a,b,c,d)
...
</code></pre>
<p>这会导致无限循环</p>
<p>首先,为什么需要递归调用?<code>d</code>参数的作用是什么?你知道吗</p>
<p>其次,什么是<code>ixim</code>?应该是<code>xim * 1j</code>之类的吗?
你对<code>print x1 = xre + ixim</code>有什么期望?你知道吗</p>
<p>如果您只想在<code>d < 0</code>的情况下打印,这就可以了</p>
<pre><code> from math import sqrt
def roots4(a,b,c):
if a != 0.:
x_left = -b/(2*a)
d = b * b - 4 * a * c
if d == 0.:
x_right = 0.
elif d > 0.:
x_right = sqrt(d) / (2 * a)
else:
xim = sqrt(-d) / (2 * a)
strx1 = "x1 = %6.2f + i %6.2f" %(x_left, xim)
print strx1
strx2 = "x2 = %6.2f - i %6.2f" %(x_left, xim)
print strx2
x_right = xim * 1j
x1 = x_left + x_right
x2 = x_left - x_right
else:
raise ValueError("incorrect leading coefficient in given square equation")
</code></pre>