まず、これは学術プロジェクトに必要であることを明確にする必要があります。私はCommon Lispを使用して、ツリー内の任意のノードの子ノードの最大数を見つけようとしています。ツリー内の子ノードの最大数を調べる
私の現在のコードは以下に示されています - 私はそのロジックの100%ではありませんが、動作するはずですが、必要な結果が得られていません。返す必要があり
(max-breadth '(a ((b (c d)) e) (f g (h i) j)))
を実行している例として
(defun breadth (list y)
(setf l y)
(mapcar #'(lambda (element)
(when (listp element)
(when (> (breadth element (length element)) l)
(setf l (breadth element (length element)))
))) list)
l)
(defun max-breadth(list)
(breadth list (length list))
)
、4
編集: トレース結果と実際の戻り値は、忘れてしまったこれら:
CG-USER(13): (max-breadth '(a ((b (c d)) e) (f g (h i) j)))
0[6]: (BREADTH (A ((B (C D)) E) (F G (H I) J)) 3)
1[6]: (BREADTH ((B (C D)) E) 2)
2[6]: (BREADTH (B (C D)) 2)
3[6]: (BREADTH (C D) 2)
3[6]: returned 2
2[6]: returned 2
1[6]: returned 2
1[6]: (BREADTH (F G (H I) J) 4)
2[6]: (BREADTH (H I) 2)
2[6]: returned 2
1[6]: returned 2
0[6]: returned 2
2
は誰もが持っています私が間違っているどんなアイデア?私はそれが第2の条件に関係していると思うが、私はよくわからない。
4を返さない場合は、何を返しますか? 6? – FrustratedWithFormsDesigner
申し訳ありませんが、それを逃し、トレース結果を追加しました。 – Jim
どこにも定義していない変数は設定しないでください。 (SETF l ...)はそのような場合です。私はあなたのコードに導入されていません。ローカル変数ではなく、グローバル変数でもなく、関数パラメータでもありません。 –