課程
/后端開(kāi)發(fā)
/Python
/初識(shí)Python
答案的思路是怎樣的?最高票的代碼沒(méi)說(shuō)明遞歸中的C --> A 問(wèn)題,有人知道完整思路么
2016-12-22
源自:初識(shí)Python 7-5
正在回答
MyEclipse有激活工具的此外,if,else,elseif這些是語(yǔ)義結(jié)構(gòu),不用分號(hào)結(jié)尾
def?move(n,?a,?b,?c): ????if?(n?==?1): ????????print?a,'-->',c ????else: ????????move(n?-?1,a,c,b) ????????move(1,a,b,c) ????????move(n?-?1,b,a,c) ???????? move(4,?'A',?'B',?'C')
這里 'A','B','C'三個(gè)柱子的地位是對(duì)稱的
1.當(dāng)柱子a上只有一個(gè)圓盤(pán)時(shí),只要講它從a移動(dòng)到c就可以了;
2.當(dāng)柱子a上面有n(n > 1)個(gè)圓盤(pán)時(shí),假設(shè)我們已經(jīng)擁有了能夠完成功能的move函數(shù),我們可以把這個(gè)問(wèn)題分為以下三個(gè)步驟:
1)先將柱子b和c互換,然后調(diào)用函數(shù)move(n - 1,a,c,b),這樣就可以把a(bǔ)上的 n - 1個(gè)盤(pán)子,放到b上,此時(shí)a上還剩1個(gè)盤(pán)子,b上有n - 1個(gè)盤(pán)子,c上沒(méi)有盤(pán)子;
2)然后調(diào)用函數(shù)move(1,a,b,c)將a上的盤(pán)子放到c上,此時(shí)a上沒(méi)有盤(pán)子,b上有n - 1個(gè)盤(pán)子,c上有1個(gè)盤(pán)子;
3)最后,將柱子b和a互換,調(diào)用函數(shù)move(n - 1,b,a,c)將b上的 n - 1個(gè)盤(pán)子放到c上,就完成了任務(wù)。
舉報(bào)
學(xué)python入門(mén)視頻教程,讓你快速入門(mén)并能編寫(xiě)簡(jiǎn)單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2022-03-23
MyEclipse有激活工具的此外,if,else,elseif這些是語(yǔ)義結(jié)構(gòu),不用分號(hào)結(jié)尾
2016-12-22
這里 'A','B','C'三個(gè)柱子的地位是對(duì)稱的
1.當(dāng)柱子a上只有一個(gè)圓盤(pán)時(shí),只要講它從a移動(dòng)到c就可以了;
2.當(dāng)柱子a上面有n(n > 1)個(gè)圓盤(pán)時(shí),假設(shè)我們已經(jīng)擁有了能夠完成功能的move函數(shù),我們可以把這個(gè)問(wèn)題分為以下三個(gè)步驟:
1)先將柱子b和c互換,然后調(diào)用函數(shù)move(n - 1,a,c,b),這樣就可以把a(bǔ)上的 n - 1個(gè)盤(pán)子,放到b上,此時(shí)a上還剩1個(gè)盤(pán)子,b上有n - 1個(gè)盤(pán)子,c上沒(méi)有盤(pán)子;
2)然后調(diào)用函數(shù)move(1,a,b,c)將a上的盤(pán)子放到c上,此時(shí)a上沒(méi)有盤(pán)子,b上有n - 1個(gè)盤(pán)子,c上有1個(gè)盤(pán)子;
3)最后,將柱子b和a互換,調(diào)用函數(shù)move(n - 1,b,a,c)將b上的 n - 1個(gè)盤(pán)子放到c上,就完成了任務(wù)。