1. 程式人生 > >僅用遞迴函式操作逆序一個棧(Swift 4)

僅用遞迴函式操作逆序一個棧(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)

  

 

 

參考文章:

僅用遞迴函式操作逆序一個棧
僅用遞迴函式,棧操作,來逆序一個棧