ホームページ  >  記事  >  ウェブフロントエンド  >  JS 再帰関数のアプリケーションを体系的に整理し、再帰スタック爆発の問題を解決します。

JS 再帰関数のアプリケーションを体系的に整理し、再帰スタック爆発の問題を解決します。

php是最好的语言
php是最好的语言オリジナル
2018-08-02 16:53:072355ブラウズ

JSを学習する際、再帰の内容は非常に複雑なので、記事の冒頭で再帰に関する関連コンテンツをケースコードを通して詳しく紹介しています。誰もがその後の学習で混乱しないように、再帰の基本的な内容を紹介し、その後、再帰の使用例を示しました。 apache php mysql

はじめに

再帰のパフォーマンスが低いことは議論の余地のない事実であり、for ループの方が優れており、再帰を学ぶ必要がないと思われる場合は、ここで読むのをやめてください。この記事で紹介するコードのほとんどは学習のみを目的としており、実稼働環境での使用はお勧めしません。ただし、関数型プログラミングに興味があり、中心となる概念のいくつかを深く理解したい場合は、読み進めてください。

今年の初めに Haskell を学び始めたとき、私は関数型コードの優雅さと単純さに魅了されました。コードは実際には次のように書くことができます。命令型コードを使用するには、大量のプログラムを作成する必要がありますが、わずか数行の再帰で解決できます。この記事では、Haskell で見た再帰関数を JS と Python に翻訳し、各ステップを説明していきます。最後に、再帰的なスタック爆発 (スタック オーバーフロー) の問題を解決してみます。

再帰の基本

Python コードから始めて、次に JS 実装を示します。

再帰を説明する多くのチュートリアルは、フィボナッチ数列の説明から始まりますが、それは、すでに複雑な概念を別の複雑な概念を説明するために使用しているように感じますが、これは不必要です。簡単なコードから始めましょう。

次の Python コードを実行します:

def foo():
 foo()

foo()

もちろん、エラーが報告されます。

以上がJS 再帰関数のアプリケーションを体系的に整理し、再帰スタック爆発の問題を解決します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。