#26490: 想請教我這樣哪裡錯了(幫幫新手ㄅ


Justlegitw (Justlegitw)

學校 : 臺北市立建國高級中學
編號 : 157112
來源 : [118.160.103.106]
最後登入時間 :
2022-07-29 20:50:49
a215. 明明愛數數 | From: [101.136.247.164] | 發表日期 : 2021-08-09 19:52

while(True):
    try:
        x = list(map(int,input().split(" ")))
        num = 0
        def sum(a,b,c,d):
            if a+b > c:
                return d+1
            else:
                return sum(a+b,b+1,c,d+1)
        print(sum(0,x[0]+1,x[1],0))
    except:
        break
 
#26491: Re:想請教我這樣哪裡錯了(幫幫新手ㄅ


406490150@gms.tku.edu.tw (我是朱朱)

學校 : 國立交通大學
編號 : 139794
來源 : [140.113.236.122]
最後登入時間 :
2022-09-03 11:13:16
a215. 明明愛數數 | From: [36.238.33.187] | 發表日期 : 2021-08-09 21:53

while(True):
    try:
        x = list(map(int,input().split(" ")))
        num = 0
        def sum(a,b,c,d):
            if a+b > c:
                return d+1
            else:
                return sum(a+b,b+1,c,d+1)
        print(sum(0,x[0]+1,x[1],0))
    except:
        break



x[0]+1 改成 x[0] 就AC了,首項要加入才行

還有,你的def應該寫在while的外面,名字也不要與內建的函式sum相同,改成mysum或是_sum或是其他total等等之類的

另外,whilte True:不需要括號,你的num也沒有用到,可以刪掉

再者,你的d每次只遞增1,而且不會回頭去找其他類似的函式,並不需要寫成遞迴,如果是想練習寫遞迴,應該要找其他更好的題目練習,這題不適合。

以及,一開始的「x = ....」,split()可以不用給參數,預設就會分離' \t\r\n'這些元素,如果要用到x[0],x[1],也可以個別獨立寫成一個名字會更好,例如a0, an = map(int, input().split())會更好

加油,希望你的Python Code可以再更簡潔呦 :D

也希望你之後會喜歡Python

 
ZeroJudge Forum