あなたは会社の部門長として参加し、その部門で働いている人の総数を知りたいとします。また、エンジニアリング部門とビジネス部門の役員が2名あります。今、人々の数を数えるために、あなたはオフィスを回ってカウントすることができます。 (しかし、それは退屈であり、また、部門の長であることのポイントは何ですか?
または、あなたのエンジニアリングヘッドに、彼の下で働いている人々を見つけるように頼んでください。例えば、x
とビジネスヘッドに彼の下で働く人々、例えばy
を見つけてください。したがって、部門で働く人の総数はx+y+1
(1人があなたのためです)です。
エンジニアリングヘッドが彼の下に2人の監督者を持ち、各監督者が監督している人の数を調べるよう依頼することができます。したがって、エンジニアリングチームの人数は、people_under_supervisor_1 + people_under_supervisor_2 + 1
(エンジニアリングヘッド1人)です。等々。
同様に、事業部門の人数をビジネスヘッドで把握する場合も同様です。このコードは、同じことをやっている
、左サブツリーの大きさを見つけ、右部分木の大きさを見つけ、現在のノードのための1を追加。 アルゴリズムがどのように動作しているかを示します。私はこの類推が助けてくれることを望みます今
、「変数の和は法の外ではなく、メソッドの中で宣言されたときに多くのメモリが保存されているどのくらいの。」をあなたがローカル変数を宣言するとき 実際より多くのメモリが使用されているについて再帰関数。ローカル変数を宣言すると、スタック内にメモリ位置が割り当てられ、そのローカル変数のスコープが完了するまでそのメモリ位置を他の目的で使用することはできません。したがって、次の関数がsize(current.getLeft())
と呼ばれると、すべての変数がスタックに残り、ローカル変数size
の新しいメモリ位置がsize(current.getLeft())
を呼び出して作成されます。関数がまだ返されない限り、size
のインスタンスはメモリに残ります。
このビデオをご覧ください。https://www.youtube.com/watch?v=_8-ht2AKyH4スタックの明確なアイデアを得るには、このビデオをご覧ください。