2012-04-09 14 views
2

私はこの質問をコンパイラの授業で持っていますが、私は実際にそれにアプローチする方法を知らない。誰も私にルーブリックで与えられたものよりも良いヒントを与えてもらえますか?解析ツリー内のノードの数値に誘導を使用します。プログラミング言語の文法

は、以下の文法によって生成されたすべてのバイナリ文字列が値3

ヒントで割り切れる を持っていることを示しています。

num -> 11 | 1001 | num 0 | num num 
+5

@DavidStratton:え?誘導は基本的な数学のテクニックのようなもので、ほとんど「誇示する」という言葉ではありません。コンパイラについて学んでいるなら、誘導についてすでに知っているはずです。それは "水"がブラガードの言葉であると不平を言うような子供です。 – Amadan

+0

@Amadan - * LOL *取得ポイント。コメントは削除されました。それはとにかく外れていた。私は日々の生活の中で決して使うことのない言葉を覚えていなければならないと思っています。私は失敗した記憶を持つばかげたばかりの人ばかりです。 Bragadoccio - それは良いです。 – David

答えて

10

は、ここでは、2つのヒントである:バイナリ表現に0をアペンド

  1. する2

  2. 自体にバイナリ表現を追加することによって乗算と等価であることは、乗算と等価です2^N + 1だけ。

+1

だから、本質的には、11または1001のいずれかに接続するところに行くつもりです。これらの2つ以外にも、num numも3で割り切れます。したがって、num 0は3で割り切れる値を倍にしています。 –

+0

@ソーレン・クリオバン:そうです。 –

関連する問題