web-dev-qa-db-ja.com

8歳の子供に「再帰」を説明するにはどうすればよいですか。

可能性のある複製:
プレーンな英語で、再帰とは何ですか?

" Recursion "を8歳の子供に説明する最良の方法は何ですか?

フィボナッチシリーズ を試してみましたが、失敗しました。

24
Soner Gönül

まあ、再帰は実際には子供のために理解するのはかなり簡単です。数学や他の人が示唆していることを試してはいけません。彼らはそれを理解するには若すぎる。抽象的すぎて退屈です。

代わりに、絵を描いているペインターの絵を描いているペインターの絵を見せてください...

このようなもの: Recursive painting

おそらくウェブ上で見つかるもっと良い例があるでしょう。そして私を信じてください:彼らはすぐにそれを理解するでしょう。

質問に関係なく、子供はM. C.エッシャーの絵が描かれた本を所有するべきだと思います。それは彼らの発展と創造性のために良いでしょう。


編集:

最近、食べ物を使うことで子供たちに再帰を説明できることもわかりました。たとえば、ブロッコリーやカリフラワーを見てみましょう。

Broccoli

これらはフラクタル野菜です。それらをばらばらにすると、小さい部分が、以前あった大きな全体のように見えることがわかります。これには、食事中に子供の再帰を教えることができるという利点があります。笑わないで!それは彼らの食事に関連している(そしてそれゆえ彼らの意識にとって重要である)ので、子供たちはそれをよりよく覚えるでしょう、そして彼らはそれを理解することができます。ドイツ語で「理解する」とは「begreifen」であり、文字通り「理解するために何かに触れる」ことを意味します。自分で試してみてください。一度触れたことを覚えるのははるかに簡単です。

61
Falcon

この文を読んで、それが二度言っていることをしてください。

BrainStackOverflowExceptionsの謝罪

23
Callum Rogers

トレーナーがポケモンを呼び出すとき、それは「通常の」関数呼び出しです。ポケモンがポケボールから自分自身を呼び出すことができた場合、それは再帰呼び出しになります(彼はポケモンを見ましたか?)。

歌手、例えばエミネム、次のような名前の呼び出しを開始します-ドレー博士、50セント(通常の呼び出し)、エミネム(再帰)。

パパが車を運転するとき、それは「通常の呼び出し」です。ボブビルダーが自分を運転するとき、それは再帰です。

4
StupidOne

ロゴ。

他の提案されたフラクタル、それは良い考えです。しかし、ロゴを使用すると、簡単にフラクタルを作成できます。

コッホのスノーフレーク:

 to koch :level :len
   ifelse :level == 0 
     [ fd :len ] 
     [ koch level-1 len/3
       lt 60  
       koch level-1 len/3  
       rt 120
       koch level-1 len/3 
       lt 60
       koch level-1 len/3 ]
 end

 koch 5 100
 rt 120
 koch 5 100
 rt 120
 koch 5 100

次に、さまざまな「基本形状」を使用します。コッホのスノーフレークは_/\_定義:「前方、左60、前方、右120、前方、左60、前方。その他の試み:

    _|_ 
      _
    _| |_

    /\

    __|

    __|_

    |\

...常に最初と同じ方向を向くように、最後に向きを変えることを忘れないでください。

後で、60度ではなく59度を使用するなど、いくつかの小さな差異を含めることを提案する場合があります。

一般に、ロゴは再帰を教えるのに最適な言語です。

4
SF.

フラクタル形式に設定されたジュリアやマンデブロのような数学的モンスターを使用してください。これは子供に何か理解できるものを与えます。あなたが問題を減らすたびに、それは同じに見えます、それはちょうどより小さいです。 無限ミラー の例は、具体的な例と同様に機能します。

2
World Engineer

私は実際の例から始めます。メトリフォアとしてマトリョーシカ人形など、コードに関連しない何かを使用して、再帰の背後にある基本的なアプローチを説明します。 (分割統治)次に、簡単な視覚的な例をコードと並べて、これがコードの再帰とどのように関連するかを説明します。 Mihai Maruseacによって言及されたシェルピンスキーのトライアングルは素晴らしいスタートです。フィボナッチは、ビジュアルが一致しない抽象的なものの良いフォローアップです。彼がフィボナッチを取得しない場合は、コードを説明する前に数学を理解してもらいます。彼はアルゴリズムを理解する前に、それを実現するコードを理解する必要があります。

2
Onno

Koch Snowflake またはそのバリエーションの1つなど、描画できるものを彼(彼女?)に与えます。

数式の場合は、数値だけでなく、具体的な具体的な内容を伝えます。同様に、アルゴリズムの次のステップを適用した後のボックス内のレゴの数(ターンやステップなど、それほど怖くないものを呼び出すことをお勧めします)。

ああ、そして無限に言及することは避けてください。好み:何度も何度も...パンして、ゲームをプレイしているような印象を受けます。

ポイントは、あなたが非常に具体的であることを確認してください。 8歳児は頭が良いかもしれませんが、その年齢の脳は、このレベルの抽象化を把握するのに十分な能力がありません。


うまくいくかもしれない追加のアプローチの1つは、ハノイの塔、ルービックキューブ、または単純なパズル(画像を床に向けて単純なパズルを解くと、すぐに終了するコンピュータのように動作し、一度に1つずつ組み合わせてみます。

2

提案されているように、フラクタルを使用します。 Sierpinskiの三角形 はこの場合に最適です。

次に、この領域の階乗、リストの長さ、リストの合計、簡単な数式に進みます。

後で Lee のようなより複雑なアルゴリズムに切り替えますが、彼にそれを考えさせて、ゲームのようにします。

1
Mihai Maruseac

壮大な失敗。

フィボナッチの例を使用して再帰の意味を説明するのではなく、再帰の使用の力を説明するために使用します。

8年前の再帰について説明したい場合は、線形系列1,2,3,4,5、..を使用してください。

そして彼に言ってください:あなたがk要素を知っていて、次の要素を知りたいとしましょう、いくつかの方法で物事を表現することができます、それらの1つはk1 = 1 k2 = k1 +1 k3 = k2 +1 k4 = k3 +1 k5 = k4 +1 k6 = k5 +1 l7 = l6 +1 k8 = k7 +1

次に、それらをすべて書き留めたくないので、一般化したいと思います。これを行う1つの方法は、K = k + 1目標数を次の要素へのステップがわかっている数と言うことです。

それからシリーズ-1、-2、-3、-4、...

次に、シリーズ2、4、6、8、..

次に、子供にシリーズを考えてもらいます。

さて、1日それについて考えさせて、1日後に、計算力の使用など、より意味のある、有用な何かを示し、これが要素番号1で停止する有限系列であり、それを逆に計算するとします:2 ^ 5 = 2 ^ 4 * 2 2 ^ 4 = 2 ^ 3 * 2 2 ^ 3 = 2 ^ 2 * 2 2 ^ 2 = 2 ^ 1 * 2 = 2 * 2 = 4 2 ^ 3 = 4 * 2 = 8 2 ^ 4 = 8 * 2 = 16 2 ^ 5 = 16 * 2 = 32

これでフィボナッチをもう一度試すことができます。

あなたが何をしようとしても、それを知らない人間には普通ではない次の再帰の構文に心が適応する必要があるので、それは数日かかります。

1
Display Name