課程
/后端開發
/Python
/初識Python
作業中,函數如何實現循環的?
2018-12-02
源自:初識Python 7-5
正在回答
#if條件不成立的省略
# { 看做遞歸開始
# } 看做遞歸結束
move(4, a, b, c):{? #實際數值(4, A, B, C)
? ? move(3, a, c, b):{? ? ? ? ? ? #c,b調換,實際數值(3, A, C, B), 將這四個值帶入move(3, a, b, c)遞歸1
? ? ? ? move(2, a, c, b):{? ? ? ? #c,b調換,實際數值(2, A, B, C), 將這四個值帶入move(2, a, b, c)遞歸2
? ? ? ? ? ? move(1, a, c, b):{? ? #c,b調換,實際數值(1, A, C, B), 將這四個值帶入move(1, a, b, c)遞歸3
? ? ? ? ? ? ? ? if n == 1:? ? ? ? #此時n==1,if條件成立
? ? ? ? ? ? ? ? print(a, '-->',c) #這是第一次打印A-->B
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸3完成,回到遞歸2,實際數值(2, A, B, C)
? ? ? ? ? ? print(a, '-->', c)? ? #這是第二次打印A-->C
? ? ? ? ? ? move(1, b, a, c):{? ? #a,b調換,實際數值(1, B, A, C), 將這四個值帶入move(1, a, b, c)遞歸4
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第三次打印B-->C? ? ? ??
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸4完成,回到遞歸2,實際數值(2, A, B, C)
? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸2完成,回到遞歸1,實際數值(3, A, C, B)? ? ? ? ? ??
? ? ? ? print(a, '-->', c)? ? ? ? #這是第四次打印A-->B
? ? ? ? move(2, b, a, c):{? ? ? ? #a,b調換, 實際數值(2, C, A, B), 將這四個值帶入move(2, a, b, c)遞歸5
? ? ? ? ? ? move(1, a, c, b):{? ? #c,b調換, 實際數值(1, C, B, A), 將這四個值帶入move(1, a, b, c)遞歸6
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第五次打印C-->A
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸6完成,回到遞歸5,實際數值(2, C, A, B)
? ? ? ? ? ? print(a, '-->', c)? ? #這是第六次打印C-->B
? ? ? ? ? ? move(1, b, a, c):{? ? #a,b調換, 實際數值(1, A, C, B), 將這四個值帶入move(1, a, b, c)遞歸7
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第七次打印A-->B
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸7完成,回到遞歸5,實際數值(2, C, A, B)
? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸5完成,回到遞歸1,實際數值(3, A, C, B)
? ? }? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸1完成,原參數中的move(n - 1, a, c, b)遞歸全部完成,實際數值(4, A, B, C)
? ? print(a, '-->', c)? #這是第八次打印A-->C,下面跟上面同樣的方式去理解,就不寫了,太累了。
? ? move(3, b, a, c):{
? ? ? ? move(2, a, c, b):{
? ? ? ? ? ? move(1, a, c, b):{
? ? ? ? ? ? ? ? print(a, '-->', c)? ?#這是第九次打印
? ? ? ? ? ? }
? ? ? ? ? ? print(a, '-->', c)#這是第10次打印
? ? ? ? ? ? move(1, b, a, c):{
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第11次打印
? ? ? ? }
? ? ? ? print(a, '-->', c)? ?#這是第12次打印
? ? ? ? move(2, b, a, c):{
? ? ? ? ? ? ? ? print(a, '-->', c)? ?#這是第13次打印
? ? ? ? ? ? print(a, '-->', c)#這是第14次打印
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第15次打印
? ? ? ? }? ??
? ? }
}
看我剛發布的問題。
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-12-02
#if條件不成立的省略
# { 看做遞歸開始
# } 看做遞歸結束
move(4, a, b, c):{? #實際數值(4, A, B, C)
? ? move(3, a, c, b):{? ? ? ? ? ? #c,b調換,實際數值(3, A, C, B), 將這四個值帶入move(3, a, b, c)遞歸1
? ? ? ? move(2, a, c, b):{? ? ? ? #c,b調換,實際數值(2, A, B, C), 將這四個值帶入move(2, a, b, c)遞歸2
? ? ? ? ? ? move(1, a, c, b):{? ? #c,b調換,實際數值(1, A, C, B), 將這四個值帶入move(1, a, b, c)遞歸3
? ? ? ? ? ? ? ? if n == 1:? ? ? ? #此時n==1,if條件成立
? ? ? ? ? ? ? ? print(a, '-->',c) #這是第一次打印A-->B
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸3完成,回到遞歸2,實際數值(2, A, B, C)
? ? ? ? ? ? print(a, '-->', c)? ? #這是第二次打印A-->C
? ? ? ? ? ? move(1, b, a, c):{? ? #a,b調換,實際數值(1, B, A, C), 將這四個值帶入move(1, a, b, c)遞歸4
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第三次打印B-->C? ? ? ??
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸4完成,回到遞歸2,實際數值(2, A, B, C)
? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸2完成,回到遞歸1,實際數值(3, A, C, B)? ? ? ? ? ??
? ? ? ? print(a, '-->', c)? ? ? ? #這是第四次打印A-->B
? ? ? ? move(2, b, a, c):{? ? ? ? #a,b調換, 實際數值(2, C, A, B), 將這四個值帶入move(2, a, b, c)遞歸5
? ? ? ? ? ? move(1, a, c, b):{? ? #c,b調換, 實際數值(1, C, B, A), 將這四個值帶入move(1, a, b, c)遞歸6
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第五次打印C-->A
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸6完成,回到遞歸5,實際數值(2, C, A, B)
? ? ? ? ? ? print(a, '-->', c)? ? #這是第六次打印C-->B
? ? ? ? ? ? move(1, b, a, c):{? ? #a,b調換, 實際數值(1, A, C, B), 將這四個值帶入move(1, a, b, c)遞歸7
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第七次打印A-->B
? ? ? ? ? ? }? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸7完成,回到遞歸5,實際數值(2, C, A, B)
? ? ? ? }? ? ? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸5完成,回到遞歸1,實際數值(3, A, C, B)
? ? }? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#最近的一次遞歸1完成,原參數中的move(n - 1, a, c, b)遞歸全部完成,實際數值(4, A, B, C)
? ? print(a, '-->', c)? #這是第八次打印A-->C,下面跟上面同樣的方式去理解,就不寫了,太累了。
? ? move(3, b, a, c):{
? ? ? ? move(2, a, c, b):{
? ? ? ? ? ? move(1, a, c, b):{
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)? ?#這是第九次打印
? ? ? ? ? ? }
? ? ? ? ? ? print(a, '-->', c)#這是第10次打印
? ? ? ? ? ? move(1, b, a, c):{
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第11次打印
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? print(a, '-->', c)? ?#這是第12次打印
? ? ? ? move(2, b, a, c):{
? ? ? ? ? ? move(1, a, c, b):{
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)? ?#這是第13次打印
? ? ? ? ? ? }
? ? ? ? ? ? print(a, '-->', c)#這是第14次打印
? ? ? ? ? ? move(1, b, a, c):{
? ? ? ? ? ? ? ? if n == 1:
? ? ? ? ? ? ? ? print(a, '-->', c)#這是第15次打印
? ? ? ? ? ? }
? ? ? ? }? ??
? ? }
}
2018-12-02
看我剛發布的問題。