您好,匿名用户
随意问技术百科期待您的加入

lisp里面反转一个列表里面的值?递归实现有问题啊

0 投票

这个是我的代码:

(defun reverse-list2 (list)
  (if (null list) nil
    (cons (reverse-list2 (rest list)) (first list))))

我想反转,一个字符串列表。比如(reverse-list2 '("tar" "tip" "net"))
希望是("net" "tip" "tar") 这样。
结果是:(((NIL . "net") . "tip") . "tar")

然后我把代码这样:

(defun reverse-list2 (list)
  (if (null list) nil
    (cons (first list) (reverse-list2 (rest list)))))

然后就正常输出,顺序的列表了。
这个不理解啊。

用户头像 提问 2013年 11月27日 @ Hecarim 上等兵 (361 威望)
分享到:

1个回答

0 投票
 
最佳答案

可以参考我的

(defun my-reverse (lst)
  (labels ((nxt (lst rst)
                (if (null lst)
                  rst
                  (nxt (cdr lst) (cons (car lst) rst)))))
    (nxt lst nil)))

需要注意的是cons是把一个element给cons到一个list前面,你这里的用法是有问题的。

用户头像 回复 2013年 11月21日 @ Kog'Maw 上等兵 (212 威望)
选中 2013年 9月7日 @Hecarim
提一个问题:

相关问题

0 投票
1 回复 95 阅读
0 投票
1 回复 29 阅读
+1 投票
1 回复 51 阅读
0 投票
1 回复 53 阅读
0 投票
1 回复 25 阅读
用户头像 提问 2014年 1月24日 @ Malphite 上等兵 (306 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...