0

それで、SML の課題があり、始めるのに少し助けが必要です。

問題はこうなる

バイナリ ツリーのサイズを返す 'a btree -> int 型の関数 btree_size を記述します。(バイナリ ツリーのサイズは、バイナリ ツリーの要素の数です)。たとえば、btree_size (Node (Leaf, 1, Node (Leaf, 2, Leaf))) は 2 を返す必要があります。関数は提供された btree_reduce 関数を使用する必要があり、最大 3 行の長さにする必要があります。

btree_reduce関数はこれ

(* A reduction function. *)
     (* btree_reduce : ('b * 'a * 'b -> 'b) -> 'b -> 'a tree -> 'b) *)
    fun btree_reduce f b bt =
      case bt of
      Leaf => b
      | Node (l, x, r) => f (btree_reduce f b l, x, btree_reduce f b r)

btreeを受け取り、reduce関数を使用してツリーのサイズを取得するbtree_size関数を作成するにはどうすればよいですか?

4

1 に答える 1

3

これは宿題なので、直接的な回答は差し控えます。:)

私は次のように進めます:

  • ツリーのサイズの計算に慣れる (仕様を満たす再帰関数を作成することによって)
  • あなたが書いた関数と btree_reduce の共通点 (または、あなたが書いた関数から抽象化できるもの) を確認してください。

もちろん、これは多くの方法の 1 つです。

于 2011-02-17T03:17:30.160 に答える