これらの問題を解決するには、再帰を使用する必要があります。
それらを非回復的に解決することは可能であり、あなたはおそらくあなたがすでに理解しているツールを使用するように誘惑されるでしょう。しかし、それはこの演習の目的を打ち負かします。これは、再帰を使用してより快適になることです。
これらのエクササイズのそれぞれについて、コードを使用せずに、次のことを識別することが期待されます。
問題を理解し、サンプルの入力と出力を考え出すことにより、各問題を開始します。いくつかのドリルでは、便利なためにサンプル入力と出力を提供しました。
フェンスにジャンプする羊の数を数える再帰関数を書きます。プログラムは入力として番号を取る必要があります。その数はあなたが持っている羊の数でなければなりません。この関数は、「別の羊がフェンスの上を飛び越える」というメッセージとともに数字を表示する必要があります。
2つのパラメーター、ベースとしての整数と、エクスポーネントとしての別の整数を取得するPowerCalculator()という関数を書き込みます。関数は、上げられたベースの値を指数のパワーに返します。 0以上の指数のみを使用します(正の数)
-PowerCalculator(10,2)は100 -PowerCalculator(10、-2)を返す必要があります指数は> = 0でなければなりません
文字列を逆にする関数を書きます。文字列を入力として使用し、文字列を逆にし、新しい文字列を返します。
n番目の三角形数を計算します。三角形の数字は、正三角形を形成できるオブジェクトをカウントします。 n番目の三角形数は、側面にnドットを持つ三角形を構成するドットの数であり、1からnのn自然数の合計に等しくなります。これは、三角形のシーケンスです:1、3、6、10、15、21、28、36、45。
セパレーターに基づいて文字列を分割する再帰関数を書きます(string.prototype.splitに類似)。この問題を解決するためにJSアレイの分割関数を使用しないでください。
特定の数のフィボナッチ配列を印刷する再帰関数を書きます。フィボナッチシーケンスは、各数値が2つの前の数値の合計である一連の数値です。たとえば、フィボナッチシーケンスの7番目のフィボナッチ数は13です。シーケンスは次のように見えます。1、1、2、3、5、8、13。
特定の数値の要因を見つける再帰関数を書きます。数字の要因は、その数値に各数値をそれ自体と1の間に掛けることで見つけることができます。たとえば、5の因子は5 * 4 * 3 * 2 * 1 = 120です。
あなたは迷路に入り、それから抜け出す方法を見つける必要があります。迷路を通る1つの出口ポイントまで、複数の可能なパスがあります。迷路を通る可能性のある道を見つけるのに役立つ再帰関数を書いてください。
迷路はn*mマトリックスとして表されます。出発点は左上隅で、出口はeで示されます。簡単にするために、迷路の右下隅を出口として使用します。迷路の境界の外に出ることはできません。迷路にはブロックされた通路があり、それらを通過することはできません。これらのブロックされた通路は *で示されています。ブロックされたセルを通過するだけでなく、以前に既に通過したセルが禁止されている場合に通過します。
ドリル内の大きな迷路の場合、可能な出口経路はrrdllddrrrrrrrになります
上記の大きな迷路を使用して、ソリューションを変更して、迷路を通るすべての可能な出口パスを見つけるようにします。迷路を通るすべての可能な出口パスを見つけるには、各ターンで移動できる場所の数を考えてください。おそらく、下、下、左、または右に?
この迷路には3つの出口パスがあることに注意してください。再帰関数は、適切な方向で3つのパスすべてを印刷する必要があります。たとえば、上記の迷路を考えると、プログラムは以下を出力する必要があります。
アナグラムは、特定の(「主題」)単語またはフレーズの文字を別の順序で使用する単語またはフレーズです。特定の単語のすべての再配置をリストするアナグラムリストを作成する関数を書きます。たとえば、ユーザーが「East」と入力する場合、プログラムは「EAT」、「ETA」、「TEA」、「TSAE」のような非単語など、24のすべての順列をリストする必要があります。
ヒント:アルゴリズムについては、プレフィックスについて考えて、それを使用して新しい単語を作成することをお勧めします。たとえば、「東」が与えられた場合、「E」を接頭辞として使用し、「AST」、「AST」、「SAT」、「STA」、「TAS」、「TSA」の6つの順列の前に配置します。これにより、「East」、「Eats」、「ESAT」、「ESTA」、「ETAS」、「ETSA」という言葉が表示されます。 「East」のすべてのアナグラムが見つかるまで、このように続けます。次に、「A」を接頭辞として使用し、残りの単語「est」を透合ヌにすることができます。 「東」の場合、24語が必要です。
ドリルに組織チャートオブジェクトを印刷する再帰関数を書きます。出力は、階層を示すために適切なインデンテーションを備えたドリルに示されているようにする必要があります。
特定の数字のバイナリ表現を印刷する再帰関数を書きます。たとえば、プログラムは3を入力として、11を出力として印刷するか、入力として25を出力として印刷する必要があります。 0のバイナリ表現は0である必要があることに注意してください。