2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
我認(rèn)為你過度思考遞歸。像這樣的解決方案應(yīng)該有效:
def onetwothree(n, count=0):
if n <= 0:
return count
last_three_digits = n % 1000
n_without_last_number = n // 10
if last_three_digits == 123:
return onetwothree(n_without_last_number, count + 1)
else:
return onetwothree(n_without_last_number, count)
print(onetwothree(123123999123))
輸出:
3

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果要計(jì)算數(shù)字中“123”出現(xiàn)的次數(shù),為什么不將數(shù)字從整數(shù)轉(zhuǎn)換為字符串并使用?str.count
然后你的函數(shù)將如下所示:
def onetwothree(x): return str(x).count('123')
但它也不再是遞歸的。
您也可以只使用與函數(shù)一起使用幾乎相同的行。print(str(123123999123).count('123'))
onetwothree
我希望這個(gè)答案對(duì):)
添加回答
舉報(bào)