小弟新手想写一个简单的dynamic prgram的递回式
Code如下:
def v(r,b):
rprob = r/(r+b)
bprob = b/(r+b)
if r ==0 and b == 0:
return 0
else:
return max(0, rprob-bprob+rprob*v(r-1,b)+bprob*v(r,b-1)
试运行之后一直报错division by zero
会有除以0的情况只发生在r跟b都是0,而一开始已经给定v(0,0) return 0了, 为什么还
会报错呢? 请大大指点一下小弟哪里需要修正 谢谢! 手机排版 伤眼抱歉
作者: AlaRduTP (Eden) 2019-02-14 10:49:00
可以想一想是先算除法,还是先判断能不能除
作者:
germun (ger)
2019-02-14 11:10:00还没判断就先除了
作者:
shiyeh (shiyeh)
2019-02-14 11:37:00哪里"一开始"就给定v(0,0) return 0 了,你是先做运算才做if判断不是?
你是先除才判断,而且为什么不用try-except
楼上 好奇问一下 try except 不是少用为妙吗
作者:
lajji (喇机)
2019-02-14 23:54:00少用为妙?谁这样说的?
作者:
AndCycle (AndCycle)
2019-02-15 00:19:00唯一要少用的情境是你全拦下来又不处理
作者:
Neisseria (Neisseria)
2019-02-15 08:58:00就算不用 try 区块也是要先判断啊C 语言没有 try 区块也是用一般的控制结构来处理
作者:
sean50301 ( (づ′・ω・)づ)
2019-02-15 09:28:00try except可以用啊 只是要知道except了哪些东西跟风险多大就好
作者:
s860134 (s860134)
2019-02-16 00:39:00不是少用为妙吗(X 知道自己在用什么(O
啊if在前面也是一样报错 我会试试try except 感谢
作者:
s860134 (s860134)
2019-02-16 15:59:00v(1,-1) 当 r=-1 * b 你的计算就爆了
作者:
lajji (喇机)
2019-02-16 17:56:00所以还是用except ZeroDivisionError比较好