ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript での再帰関数の使用方法の詳細な説明

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

黄舟
黄舟オリジナル
2017-11-18 10:50:442333ブラウズ

前回の記事では、JavaScript再帰関数を分析しました。では、JavaScriptで再帰関数を使用する方法について説明しました。今回はJavaScriptにおける再帰関数の使い方について詳しく紹介していきます!

いわゆる再帰関数とは、この関数を関数本体内で呼び出すことです。再帰関数を使用する場合は、適切に処理しないと無限ループに陥る可能性があるので注意してください。再帰関数は階乗問題などの特定の状況でのみ使用できます

10 以内で階乗を作ってみましょう:

[Ctrl+A ですべて選択します 注: 外部 Js を導入する必要がある場合は、実行するために更新する必要があります】

再帰関数の呼び出しについてはここまでです

js の再帰関数が自分自身を呼び出すときの保険の方法です。
JS 高度なプログラミングより
典型的な階乗再帰関数:

コードは次のとおりです:

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

次のコードはエラーを引き起こす可能性があります:

var anotherFact = fact; 
fact = null; 
alert(antherFact(4)); //出错

fat は関数ではなくなったため、エラーが発生します。
この問題は、実行される関数へのポインタであるarguments.calleeで解決できます。
新しい関数は次のとおりです:

コードは次のとおりです:

function fact(num){ 
if (num<=1){ 
return 1; 
}else{ 
return num*arguments.callee(num-1); //此处更改了。 
} 
} 
var anotherFact = fact; 
fact = null; 
alert(antherFact(4)); //结果为24.

JSの通常の再帰の改善

以下に示すように、関数が名前でそれ自体を呼び出すときに再帰関数が形成されます:

コードは次のとおりです。以下のようになります:

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

これは古典的な階乗関数です。表面的には問題がないように見えますが、次のコードにより問題が発生する可能性があります。

var anotherFactorial = factorial; 
anotherFactorial(4); //输出 24 
factorial = null;

anotherFactory (4); //TypeError: object [object Window] のプロパティ 'factorial' は関数ではありません Chrome でテストします
その理由は、定義した関数名が実際には関数へのポインターであるためです。この時点では、anotherFactorial が定義されており、その関数を指しているため、anotherFactorial (4) を呼び出すと正常に 24 が出力されます。このとき、factorial = null であるため、
define 関数 を実行する参照は anotherFactorial のままになり、anotherFactorial(4) を呼び出します。 ) 上記のエラーメッセージが表示されます。 この時点で、arguments.callee を使用して関数定義の階乗を置き換えることができます。
関数の定義は次のようになります。

コードは次のとおりです。

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

次に、上記の 4 行のテスト コードを使用して、テスト コードの最後の行も使用できます。 成功した出力 24.

概要:

上記の記事での詳細な紹介を通じて、友人たちは JavaScript での再帰関数の使用法をよりよく理解したと思います。あなたの仕事に役立つことを願っています!

関連する推奨事項:

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


JSの再帰関数


JavaScript の再帰関数の洗練された理解とサンプルコードの共有

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

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