第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

遞歸函數(shù),用于計(jì)算某個(gè)序列出現(xiàn)的次數(shù)

遞歸函數(shù),用于計(jì)算某個(gè)序列出現(xiàn)的次數(shù)

慕田峪4524236 2022-08-02 16:52:35
我正在編寫一個(gè)遞歸函數(shù),該函數(shù)將整數(shù)作為輸入,它將返回整數(shù)中出現(xiàn)123的次數(shù)。例如:打?。ㄒ欢?23123999123))將打印出 3,因?yàn)樾蛄?123 在我輸入到函數(shù)中的數(shù)字中出現(xiàn) 3 次。這是我到目前為止的代碼:def onetwothree(x):    count = 0    while(x > 0):        x = x//10        count = count + 1    if (count < 3):  #here i check if the digits is less than 3, it can't have the sequence 123 if it doesn't have 3 digits        return 0    if (x%10==1 and x//10%10 == 2 and x//10//10%10==3):        counter += 1    else:        return(onetwothree(x//10))這會(huì)繼續(xù)打印“0”。
查看完整描述

2 回答

?
慕標(biāo)琳琳

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


查看完整回答
反對(duì) 回復(fù) 2022-08-02
?
拉丁的傳說

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ì):)


查看完整回答
反對(duì) 回復(fù) 2022-08-02
  • 2 回答
  • 0 關(guān)注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)