僅用遞歸函數操作逆序一個棧(Swift 4)
/// 取出棧底的數
func getAndRemoveLastElement(_ items: inout [Int]) -> Int {
let value = items.remove(at: 0)
if (items.isEmpty) {
return value
}
let last = getAndRemoveLastElement(&items)
items.insert(value, at: 0)
return last
}
func reverse(_ items: inout [Int]) {
if (items.isEmpty) {
return
}
let value = getAndRemoveLastElement(&items)
reverse(&items)
// 逆序把棧底的數放回數組中,完成逆序
items.append(value)
}
var data = [1, 2, 3, 4, 5]
reverse(&data)
print(data)
參考文章:
僅用遞歸函數操作逆序一個棧
僅用遞歸函數,棧操作,來逆序一個棧
Stay hungry,stay foolish.

浙公網安備 33010602011771號