4

作成する関数を作成しようとしてtwo arguments x and yいますがlist of y times repeated elements X、どのように実行するか、どのメソッドを使用するかについて混乱しています。リスト圧縮で実行できると思いますが、たとえば、単純なコードを次のようにしたいと思います。これ

if y = 4
 and x = 7
 result is list of elements (7, 7, 7, 7)

どうすればそれについて何かアイデアを出すことができますか?本のリンクや私が検索しようとした手がかりを与えるものは何でも私は幸運ではありませんでした

4

2 に答える 2

22

make-listは、initial-elementキーで使用できます。

CL-USER> (make-list 10 :initial-element 8)
   (8 8 8 8 8 8 8 8 8 8)

このような関数を自分でコーディングする方法の良い例は、Óscaranswerによって提供されています。

于 2012-11-18T16:29:24.227 に答える
0

これを試してみてください。Schemeにありますが、一般的な考え方はCommonLispに変換するのに十分簡単なはずです。

(define (repeat x y)
  (if (zero? y)
      null
      (cons x
            (repeat x (sub1 y)))))

編集:

さて、Common Lispでは:

(defun repeat (x y)
  (if (zerop y)
      nil
      (cons x
            (repeat x (1- y)))))
于 2012-11-18T16:28:59.393 に答える