我有以下的Python方程式正確地執行:遞歸式似乎並不在Python
def E(r, b):
if r == 0:
return 0
elif b == 0:
return r
else:
return max(0, (r/(r+b))*[1+E(r-1,b)]+(b/(r+b))*[E(r,b-1)-1])
print E(1,1)
遞歸似乎並沒有工作。對於E(1,1),數學方程應返回1/2。然而,我得到0和E(2,2),我得到一個錯誤,在數學上它應該是2/3。
from __future__ import division
def E(r, b):
if r == 0:
return 0
elif b == 0:
return r
else:
return max(0, (float(r)/float(r+b))*[1+E(r-1,b)]+(float(b)/float(r+b))*[E(r,b-1)-1])
print E(1,1)
我做了如下調整,但仍然遇到了錯誤:
第一部分不應該是1/2? – VMO
你使用的是什麼版本的Python?如果是python2,division將返回一個int。 – DTing
強制變量浮動以獲得浮點除法。 – jwilner