1. 再帰とは何ですか?関数が内部的に自分自身を呼び出すことができる場合、この関数は再帰的です。簡単に理解すると、関数は内部的に自分自身を呼び出し、この関数は再帰関数です。 以下のように表示されます。 関数fn(){ 関数fn(); } 関数fn(); この関数は再帰関数です。直接印刷すると、次のようになります。 印刷エラーが見つかりました。なぜでしょうか?再帰関数はループと同じ効果を持つためです。戻り値が与えられない場合は、無限ループが継続されます。つまり、次のことが分かります。 再帰はスタック 正しい再帰関数を書くにはどうすればいいですか?上記のコードを例に挙げます。たとえば、「hello」を 5 回印刷したい場合は、次のように記述します。 var 数値 = 1; 関数fn(){ console.log('こんにちは'); if(数値 == 5){ 戻る; } 数値++; 関数fn(); } 関数fn(); 印刷結果は次のとおりです。 再帰とは何かがわかったので、再帰を使って問題を解決する方法を見てみましょう。 2. 再帰を使って数学の問題を解く1. 1 * 2 * 3 * 4 …*nの階乗を求めます。コードは次のとおりです。 関数fn(n){ (n == 1)の場合{ 1 を返します。 } n*fn(n-1) を返します。 } console.log('1-20の階乗は: '+fn(20)); console.log('1-10の階乗は: '+fn(10)); console.log('1-5の階乗は: '+fn(5)); 印刷結果は次のとおりです。 2. フィボナッチ数列を見つけるフィボナッチ数列は「ウサギ数列」とも呼ばれ コードは次のとおりです。 関数fb(n){ n === 1 || n === 2 の場合{ 1 を返します。 } fb(n-1) + fb(n-2) を返します。 } console.log('3番目のフィボナッチ数の値は次のとおりです: '+fb(3)); console.log('10番目のフィボナッチ数の値は次のとおりです: '+fb(10)); 印刷結果は次のとおりです。 3. 再帰を使用して対応するデータオブジェクトを見つける
次のようなオブジェクトがあります。 var 日付 = [{ id:1, 名前:「電気製品」、 品:[{ id: 11, gname:'携帯電話' },{ id: 12, gname: 'コンピュータ' }] },{ id:2, 名前:「衣類」, 品:[{ id : 21, gname:'パンツ' },{ id : 22, gname : 'コート' }] },{ id : 3, 名前: '食べ物' }]; ここで、 まず、次に示すように、for...Each() を使用して配列を走査し、各値を取得します。 関数 getId(配列,id){ 配列.forEach(関数(値){ console.log(値); }) } 取得ID(日付、1); 印刷された結果は次のとおりです。 このとき、ID 1 のオブジェクトの値を取得したい場合は、次のようにします。 関数 getId(配列,id){ 配列.forEach(関数(値){ if(値.id === id){ console.log(値); } }) } 取得ID(日付,1); 印刷結果は次のとおりです。 はい、しかし、ID 11 のオブジェクトの値を取得したい場合はどうすればよいでしょうか。明らかに、関数を直接呼び出すことは実現可能ではありません。これは、for...Each を通じて最も外側のオブジェクトの値を取得するだけで、内側のレイヤーの特定の分類は取得されないためです。このとき、getId(array,id) 関数を再帰的に呼び出すことで、内側のオブジェクトの値を取得できます。 操作は以下のとおりです。 関数 getId(配列,id){ 配列.forEach(関数(値){ if(値.id === id){ console.log(値); }それ以外の場合(value.goods && value.goods.length != 0){ getId(値.商品,ID); } }) } // getId(日付,1); getId(日付、11); 印刷された結果は次のとおりです。 以下もご興味があるかもしれません:
|
<<: KVM 仮想化のインストール、展開、管理のチュートリアル
>>: ウェブページ上でデスクトップ exe プログラムを呼び出す簡単な方法
1. インライン スタイル (<body></body> 内に配置されます)...
1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...
目次序文コードの実装アイデア 1アイデア2要約する参照ドキュメント序文プロジェクト内の小さな要件ポイ...
目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....
MySql データベース システムをインストールして構成します。 1. ダウンロード http://...
この記事では、vue+element-uiでヘッドナビゲーションバーコンポーネントを実装するための具...
各ブラウザの select タグのプロパティと各ブラウザのサポートが多少異なるため、各ブラウザでの選...
スタイル シートは、ドキュメントの表示方法、発音方法、または入力方法を記述します。スタイル シートは...
黄金律常に同じコーディング標準セットに従ってください。同じプロジェクトに何人の人が関わっているかに関...
Linux システムでは、環境変数は適用範囲に応じて、システムレベルの環境変数とユーザーレベルの環境...
この記事の例では、複数のカウントダウンを同時に設定するためのVueの具体的なコードを参考までに共有し...
目次1. イベント委任とは何ですか? 2. イベント委任の原則3. イベント委託の役割1. イベント...
この記事では、ページング効果を実現するためのjquery+Ajaxの具体的なコードを参考までに紹介し...
Vueに触れたばかりのパートナーの多くは、開発環境ではVueプロジェクトは正常であるが、パッケージ化...
データベースをインストールした後、誤ってインストール ウィンドウを閉じたり、長期間 root ユーザ...