小弟新手想寫一個簡單的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比較好