使用python 2.7。Python中的递归问题
下面的代码允许我输入两个球队(WP_1和WP_2)的胜率(胜率(k)),并确定给定两个球队的胜率,最后一支球队获胜的概率本赛季(Playoff_Probability)的:
def PlayoffProb(WP_1, k, WP_2):
TProb_2 = 0
p = float(WP_1)/1000
q = float(WP_2)/1000
n = 162.0
G = math.factorial(n)/(math.factorial(k)*math.factorial(n-k))
Prob = G*(p**k)*((1-p)**(n-k))
for c in range(0, k):
G_2 = math.factorial(n)/(math.factorial(c)*math.factorial(n-c))
Prob_2 = G_2*(q**c)*(1-q)**(n-c)
TProb_2 += Prob_2
Playoff_Probability = Prob*TProb_2
print Playoff_Probability
print TProb_2
但是这将是一个容易得多是,如果函数可以递归编写,以便它会在k的每一个可能值执行相同的操作,并返回结束的总概率(我相信应该由Playoff_Probability给出每个通过k函数运行的值,我尝试设置等于Total_Playoff_Probability)的季节。
我试过下面的代码,但是我得到一个TypeError告诉我'float'对象在返回Total_Playoff_Probability步骤时不可调用。我也不确定是否已经适当地设置了递归。
def PlayoffProb2(WP_1, k, WP_2):
TProb_2 = 0
Total_Playoff_Probability = 0
p = float(WP_1)/1000
q = float(WP_2)/1000
n = 162.0
G = math.factorial(n)/(math.factorial(k)*math.factorial(n-k))
Prob = G*(p**k)*((1-p)**(n-k))
for c in range(0, k):
G_2 = math.factorial(n)/(math.factorial(c)*math.factorial(n-c))
Prob_2 = G_2*(q**c)*(1-q)**(n-c)
TProb_2 += Prob_2
Playoff_Probability = Prob*TProb_2
Total_Playoff_Probability += Playoff_Probability
if k == 162:
return Total_Playoff_Probability
else:
return PlayoffProb2(WP_1, k+1, WP_2)
任何帮助将不胜感激!
建议:为获得最佳效果,复制/粘贴确切的python错误。 –