您好,登錄后才能下訂單哦!
1 #題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
代碼:
2 3 li = list(input('請輸入5個字符:')) 4 n = len(li) 5 i = 0 6 7 def order(li,n,i): 8 if i <= n-1-i: 9 tmp = li[i] 10 li[i] = li[n-1-i] 11 li[n-1-i] = tmp 12 i += 1 13 order(li,n,i) 14 return(li) 15 16 print(order(li,n,i))
運行結果:
[root@HK code_100]# python code_27.py 請輸入5個字符:abcdefghi123456768 ['8', '6', '7', '6', '5', '4', '3', '2', '1', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'] [root@HK code_100]# python code_27.py 請輸入5個字符:abcde ['e', 'd', 'c', 'b', 'a'] [root@HK code_100]#
代碼解釋:
#思路:遍歷經過輸入轉換后的列表li,通過三方參數賦值,將第一個和最后一個元素交換位置,然后遞歸新的列表, # 將新列表的第二個元素和倒數第二個元素交換位置,以此類推,全部交換完之后,列表就會做到反轉 2 3 li = list(input('請輸入5個字符:')) #接收輸入的5個字符,并且轉換成列表 4 n = len(li) #計算列表長度,以便后面使用 5 i = 0 #定義參數i為從0開始 6 7 def order(li,n,i): #定義函數order,傳入三個參數,li列表,列表長度,列表下標 8 if i <= n-1-i: #條件判斷列表正數元素小于或者等于列表倒數元素,防止重復交換位置,因為是小于或者等于, 所有列表個數是單數還是雙數都不受影響 9 tmp = li[i] #從這往后三條是通過三方參數tmp交換兩個數值 10 li[i] = li[n-1-i] 11 li[n-1-i] = tmp 12 i += 1 #正數元素下標依次累加 13 order(li,n,i) #將之前交換完元素的的列表遞歸到這個函數,傳入新的參數,繼續計算,一直到所有元素都有交換 14 return(li) #全部交換完之后返回新的列表 15 16 print(order(li,n,i)) #打印結果
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。