[問題] 遞迴報錯不能除以0的問題已刪文

看板Python作者 (genechen)時間5年前 (2019/02/14 10:35), 編輯推噓9(9010)
留言19則, 13人參與, 5年前最新討論串1/1
小弟新手想寫一個簡單的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了, 為什麼還 會報錯呢? 請大大指點一下小弟哪裡需要修正 謝謝! 手機排版 傷眼抱歉 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 72.78.181.51 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1550111751.A.1F8.html

02/14 10:49, 5年前 , 1F
可以想一想是先算除法,還是先判斷能不能除
02/14 10:49, 1F

02/14 11:10, 5年前 , 2F
還沒判斷就先除了
02/14 11:10, 2F

02/14 11:37, 5年前 , 3F
哪裡"一開始"就給定v(0,0) return 0 了,你是先做運算才做
02/14 11:37, 3F

02/14 11:37, 5年前 , 4F
if判斷不是?
02/14 11:37, 4F

02/14 13:15, 5年前 , 5F
你是先除才判斷,而且為什麼不用try-except
02/14 13:15, 5F

02/14 22:19, 5年前 , 6F
樓上 好奇問一下 try except 不是少用為妙嗎
02/14 22:19, 6F

02/14 23:54, 5年前 , 7F
少用為妙?誰這樣說的?
02/14 23:54, 7F

02/15 00:19, 5年前 , 8F
唯一要少用的情境是你全攔下來又不處理
02/15 00:19, 8F

02/15 08:52, 5年前 , 9F
我也第一次聽到少用為妙try except
02/15 08:52, 9F

02/15 08:58, 5年前 , 10F
就算不用 try 區塊也是要先判斷啊
02/15 08:58, 10F

02/15 09:05, 5年前 , 11F
C 語言沒有 try 區塊也是用一般的控制結構來處理
02/15 09:05, 11F

02/15 09:28, 5年前 , 12F
try except可以用啊 只是要知道except了哪些東西跟風險
02/15 09:28, 12F

02/15 09:28, 5年前 , 13F
多大就好
02/15 09:28, 13F

02/15 16:46, 5年前 , 14F
回6F,應該是少用except all
02/15 16:46, 14F

02/16 00:39, 5年前 , 15F
不是少用為妙嗎(X 知道自己在用甚麼(O
02/16 00:39, 15F

02/16 04:43, 5年前 , 16F
啊if在前面也是一樣報錯 我會試試try except 感謝
02/16 04:43, 16F

02/16 11:55, 5年前 , 17F
把rporb跟bporb的運算寫到else裡面呢
02/16 11:55, 17F

02/16 15:59, 5年前 , 18F
v(1,-1) 當 r=-1 * b 你的計算就爆了
02/16 15:59, 18F

02/16 17:56, 5年前 , 19F
所以還是用except ZeroDivisionError比較好
02/16 17:56, 19F
文章代碼(AID): #1SPDG77u (Python)