Lisp@UNIX版 (585レス)
1-

335: 332 [sage] 03/07/03 11:15 AAS
>>332,333
332(1): 名無しさん@お腹いっぱい。 [sage] 03/07/03 10:49 AAS
どうして append 使わないで再帰で書きたいのかも教えてほしいけど…
とりあえず、その条件だけならこんな感じでいけそう。

(defun test (list1 list2)
(test1 list1 list2 ()))

(defun test1 (l1 l2 lst)
(if (null l1) (nreverse lst)
(test1 (cdr l1) l2
(test2 (car l1) l2 lst))))

(defun test2 (s l r)
(if (null l) r
(test2 s (cdr l) (cons (concat s (car l)) r))))
333(2): 名無しさん@お腹いっぱい。 [sage] 03/07/03 10:56 AAS
>>331 見た感じ elisp だな.

(defun my-test2 (lst1 lst2)
(my-test2-aux lst1 lst2 nil))
(defun my-test2-aux (lst1 lst2 acc)
(if (null lst1)
(nreverse acc)
(my-test2-aux (cdr lst1) lst2
(my-test2-aux2 (car lst1) lst2 acc))))
(defun my-test2-aux2 (e lst acc)
(if (null lst)
acc
(my-test2-aux2 e (cdr lst) (cons (concat e (car lst)) acc))))

↓どう考えてもこっちのが効率的だとおもうが,なんで再帰でやりたいんだ??
(defun my-test3 (lst1 lst2)
(let (acc)
(dolist (e1 lst1 (nreverse acc))
(dolist (e2 lst2)
(push (concat e1 e2) acc)))))
普段はあまり再帰とか意識しないで作ってるんで再帰したらどうなるのかなーって思っ
て。
んで、なんとなく append を使わないで書いてみたくなったんですが、うまい書き方が
思い浮かばなかったんで聞いてみました。

最初に作ったのは、>>333 さんの後ろのやつと同じ感じになってました。

ありがとうございますです。
1-
あと 250 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s