1

重複の可能性:
「The Little Schemer」のフォームのみを使用してリストを平坦化する

'(ab (cd) e) を '(abcde) に変換したいだけです (つまり、要素の順序を維持しながら、内側のリストの各メンバーを外側のリストに挿入します)。

これを行うには簡単な方法が必要ですが、何らかの理由で私にはわかりません。

4

1 に答える 1

0

'(ab (cd) e) は木ですよね?何かのようなもの

a---b
|\--c--d
 \--e 

この表現では、ノードはリストであり、リーフはシンボルです。あなたができることは、ツリーのすべての葉を印刷します:

  1. ツリーが空の場合 (= は空のリスト)、停止します。
  2. ツリーが空でない場合、
    1. ツリーの CAR がシンボルの場合は、それを出力してから、ツリーの CDR を処理します
    2. ツリーの CAR がリストの場合、ツリーの CAR を処理してから、ツリーの CDR を処理します。

それができたら、「印刷」を「値をどこかに置く」に置き換えます。うまくいけば、それはあなたが望むものにあなたを導くはずです.

于 2012-09-28T01:47:53.037 に答える