• 締切済み

LISPのプログラミングについて

リストと数nを引数として、リストの(n-1)番目の要素を返す関数を 再帰を使って定義するにはどうすればいいでしょうか?

みんなの回答

  • Quux
  • ベストアンサー率57% (16/28)
回答No.4

もし、「n-1」に困難を感じているのであれば、リストのn番目の要素を返す関数「nth」をまず書いてみて、それをひとつずれた要素を返すように修正するか、もうひとつ関数を書いて n-1 をパラメータに nth を呼び出すように書けばいいんじゃないかな。

yuitirou5
質問者

補足

そもそも、リストのn番目を返す関数が分からないんです・・・。

  • Quux
  • ベストアンサー率57% (16/28)
回答No.3

こういう、演習課題みたいなものをそのまま質問してくる意図は何でしょうか? 何がわからないのですか? 再帰の考え方そのものがわからない? 構文がわからい? (当方もCommon Lisp系なのか、scheme系なのか何も与えられていないので、どっちにしろ分りませんが) 努力しないで単位がほしい? どれ?

yuitirou5
質問者

補足

テスト範囲の勉強のためです(単位は欲しいですけど) (setq x (- n 1) (setq y 0) (defun a (lst n) (cond ((equal x y) (car lst)) ((> x y) (+ 1 y)) (t (a (cdr lst)))) このように作ってみたのですがエラーになってしまいます どこが間違えているのか、またどこを改良すればよいのか教えていただきたいのです。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>0オリジンとは何でしょうか(初心者なので分からないです。) リスト (a b c) について 0番目が a 1番目が b 2番目が c と数えるということ。 (foo '(a b c) 2) とした時 1番目の b を返すということか?という質問ね。 >具体的に解答例を教えていただきたいのですが・・・。 それはできん。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

n = 1 の場合の定義を書いて n > 1 の場合の計算を n-1 の場合の計算結果を使って表わすだけ。 # リストは 0 オリジンで考えてるの? # n < 1 の時は nil を返せばいいの?

yuitirou5
質問者

お礼

0オリジンとは何でしょうか(初心者なので分からないです。) n<1のときはnilを返せばいいです。 具体的に解答例を教えていただきたいのですが・・・。

関連するQ&A

専門家に質問してみよう