zoukankan      html  css  js  c++  java
  • 【SICP练习】57 练习2.27

    

    练习2.27

    又是修改程序的题目,要求我们写出的deep-reverse函数要将表中的元素也反转过来,这其中应该要用到递归来实现吧。

    (define (deep-reverse tree)

       (cond ((null? tree) ‘())

              ((not (pair? tree)) tree)

              (else (reverse (list (deep-reverse(car tree))

                               (deep-reverse (cadrtree)))))))

    但是对于((1 2) (3 4) (5 6))这种,上面的函数就无法按我们的刚才的想法来返回了。它的返回值会是(4 3) (2 1)),而我们要的返回值则是((6 5) (4 3) (2 1))。因此要对程序进行修改。

    (define (deep-reverse lst)

       (define (iter remainder-items result)

           (if (null? remainder-items)

               result

               (iter (cdr remainder-items

                    (cons (if (pair? (car remainder-items))

                             (deep-reverse (car remainder-items))

                             (car remainder-items))

                          result))))

         (iter lst ‘()))

    版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    linux(ubuntu) 安装 node.js
    正反向代理
    js正则表达式----replace
    webpack开发小总结
    稳定排序和非稳定排序
    树状数组 --- (离散化+树状数组、求逆序对)
    编程之美初赛第一场 题目3 : 活动中心
    巴什博弈 杭电 1847
    巴什博弈 杭电 1846
    约瑟夫环问题详解
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786162.html
Copyright © 2011-2022 走看看