ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の再帰関数を使用した問題解決

JavaScript の再帰関数を使用した問題解決

黄舟
黄舟オリジナル
2017-11-18 11:28:481435ブラウズ

前回の記事では、JavaScriptでの再帰関数の使い方について紹介しました。そして、JavaScriptで再帰関数を使用すると、いくつかの問題が発生します。今日は、その例を紹介します。 JavaScriptの再帰関数!

まず、正の整数 N の階乗を見つけるための再帰関数を定義します:

function factorial(num){
    if(num<=1)
        return 1;
    return num*factorial(num-1);
}

次に、この関数を指す別の変数を定義し、次に関数を null に設定します

var anotherFactorial=factorial;
factorial=null;
alert(anotherFactorial(4));//报错

なぜエラーが報告されるのでしょうか?関数階乗内では階乗自体が再帰的に呼び出され、上記のコードは階乗を null に設定するため、関数ではなくなります。少し奇妙に聞こえるかもしれませんが、これが JavaScript の内部処理方法です。この問題を解決するにはどうすればよいでしょうか?一つの方法は、関数内で関数自体をarguments.calleeに置き換えることです

function factorial(num){    
if(num<=1)        
return 1;    
return num * arguments.callee(num-1);
}

この方法では、関数がどの変数に代入されていても、後続の呼び出しでは問題が発生しません。したがって、関数自体ではなく再帰関数内で argument.callee を使用することをお勧めします。または、

関数式を使用してこの問題を解決することもできます:

var factorial = (function f(num){    
if(num<=1)        
return 1;    
return num*f(num-1);
});

この方法では、変数階乗変数が別の変数に代入されているかどうかに関係なく、再帰呼び出しで問題は発生しません。

概要:

この記事の詳細な紹介を通じて、友人は JavaScript の再帰関数の問題について新たな理解を深めてくれると思います。あなたの仕事に役立つことを願っています。


関連する推奨事項:

JavaScriptでの再帰関数の使用の詳細な説明


JavaScriptの再帰関数の分析と説明


JavaScript の再帰関数の詳細な理解とサンプルコードの共有

以上がJavaScript の再帰関数を使用した問題解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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