ホームページ > 記事 > ウェブフロントエンド > JavaScript の再帰関数を使用した問題解決
前回の記事では、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 の再帰関数を使用した問題解決の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。