• 请实现一个递归版本的reverse函数,反转一个数组。

    参考答案

    1. function reverse(A){
    2. return A.length ?
    3. reverse( A.slice(1) ).concat(A[0]) : A
    4. }
    5. function reverse(A){
    6. const [f, ...tail] = A
    7. return [...(tail.length ? reverse(tail) : []), f]
    8. }
    9. // 尾递归
    10. function reverse(A, i = 0){
    11. if(i < A.length / 2) {
    12. const t = A[i]
    13. A[i] = A[A.length - i - 1]
    14. A[A.length - i - 1] = t
    15. return reverse(A, i+1)
    16. }
    17. }