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

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

為什么我會(huì)收到 RecursionError:超出最大遞歸深度?

為什么我會(huì)收到 RecursionError:超出最大遞歸深度?

函數(shù)式編程 2021-11-16 16:54:59
這是代碼:def isEven (n):    #function checks if the number is even or odd    if (int(n)%2) == 0:        True    else:        Falsedef Edit(b,x,y): #function loops through the number   m = str(b)   for i in range(1, len(m)+1):        if isEven(m[-i]):            continue        elif int(m[-i+(len(m))]) > 5:            b = b + 1        else:            b = b - 1        y = y + 1        x = x + 1   Edit(b,x,y)number = input()Number = int(number)caseNum = 0moves = 0Edit(Number,caseNum,moves)print('Case #' + str(caseNum) + ' : ' + str(moves))我想創(chuàng)建一個(gè)代碼來(lái)檢查數(shù)字中是否有奇數(shù)位并遞增或遞減數(shù)字直到數(shù)字中沒(méi)有奇數(shù)位。
查看完整描述

2 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

我不太清楚您期望的輸出是什么,因此假設(shè)您不想要數(shù)字中的奇數(shù)(4567 -> 4468)


您只需通過(guò)以下方式即可:


n = [int(i) for i in input("Enter a number: ")]

caseNum = 0


for i, x in enumerate(n):

    if x % 2 != 0:

        if x > 5:

            n[i] += 1

        else:

            n[i] -= 1

        caseNum += 1


print("".join(str(x) for x in n), "CaseNum: ", caseNum)

如果您已經(jīng)在主程序中使用了 if-else,則您實(shí)際上并不需要 Even 函數(shù)。


對(duì)于您的代碼,如果您使用的是 Even 函數(shù),則需要返回值True或False。


 def isEven (n):    #function checks if the number is even or odd

    if int(n) % 2 == 0:

        return True

    else:

        return False

您正在RecursionError調(diào)用相同的函數(shù)(循環(huán)它)而沒(méi)有任何停止條件。


 Edit(b,x,y)

您函數(shù)中的此語(yǔ)句正在創(chuàng)建問(wèn)題,并且在限制之后,python 停止執(zhí)行并給出錯(cuò)誤。


如果你能詳細(xì)說(shuō)明使用caseNum和動(dòng)作,我就可以在程序中添加它們。


查看完整回答
反對(duì) 回復(fù) 2021-11-16
?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

即使沒(méi)有無(wú)條件調(diào)用Edit(b,x,y)作為最后一步,您的代碼也正朝著“超出最大遞歸深度”的方向發(fā)展。


問(wèn)題是您正在根據(jù)數(shù)字增加或減少數(shù)字??紤]一個(gè)像3000一個(gè)高階奇數(shù)位的數(shù)字。在 1000 次遞歸調(diào)用中,您需要將它增加或減少近 1000 次。但是默認(rèn)的堆棧深度只有 1000 幀,所以你已經(jīng)沉沒(méi)了。


但情況會(huì)變得更糟??紤]一個(gè)簡(jiǎn)單的數(shù)字,例如10,您的遞減和遞增邏輯會(huì)將其更改為 9,然后變回 10,然后是 9,然后是 10,依此類推。


你最好像@DeepMehta 那樣遞增和遞減單個(gè)數(shù)字,而不是整個(gè)數(shù)字。


要正確控制對(duì) 的遞歸調(diào)用Edit(),請(qǐng)使用您的x和/或y計(jì)數(shù)器來(lái)確定在此調(diào)用期間是否進(jìn)行了任何更改。如果沒(méi)有變化,返回號(hào)碼。如果有變化,遞歸完成工作。


至于isEven()功能,你可以簡(jiǎn)單地做:


def isEven(number):

    ''' function checks if the number is even or odd '''


    return int(number) % 2 == 0


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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