scheme吧 关注:1,489贴子:964
  • 8回复贴,共1

有个问题,怎么做到把list第一个数放到最后以及把最后一个数提前

只看楼主收藏回复

list是用cons表示的,想了半天还是不知道该怎么写出这种rotate functionQAQ

求助大佬=。=


1楼2018-03-06 05:05回复
    还是两个字,递归。
    具体解法how to design programs网站上面有,你画一个递归的流程图就看出来了。


    IP属地:湖南4楼2018-04-25 00:27
    回复
      另外,大部分问题推荐的参考书就是,
      The Little Schemer.


      IP属地:湖南5楼2018-04-25 00:28
      回复
        (f l)=(cons (cadr l)
        (f (cons (car l)
        (cddr l))))


        IP属地:江西8楼2019-08-25 18:45
        回复
          不带'() 检查可乎?
          (define rright
          (lambda(origin mylist)
          (cond ((= (length mylist) 1) (append mylist origin))
          (else (rright (cons (car mylist) origin) (cdr mylist))))))
          (rright '() '(1 2 3))


          IP属地:立陶宛来自Android客户端9楼2019-09-07 23:08
          回复
            带'() 检查多写一行,所以……


            IP属地:立陶宛来自Android客户端10楼2019-09-07 23:10
            回复
              (define(rotate-right lst)
              (if (null? (cdr lst))
              lst
              (
              (lambda (r)
              (cons
              (car r)
              (cons (car lst) (cdr r))
              )
              )
              (rotate-right (cdr lst))
              )
              )
              )
              (define(rotate-left lst)
              (define (append-one lst x)
              (if (null? lst)
              (cons x '())
              (cons (car lst) (append-one (cdr lst) x))
              )
              )
              (append-one (cdr lst) (car lst))
              )


              IP属地:浙江11楼2019-09-15 17:36
              回复