尻尾耳について...
3200 ワード
テール再帰
再帰関数の呼び出しスタックが深いほど、メモリオーバーヘッド(スタックオーバーフロー)の問題を解決するための再帰呼び出し方式とは、再帰関数の実行結果を演算に使用せずに直接返すように、前の関数の状態を維持する必要がない再帰関数を記述することである.
Butテールが正常に動作するように、プラットフォームはTail Call Optimizationをサポートする必要があります.
再帰関数の呼び出しスタックが深いほど、メモリオーバーヘッド(スタックオーバーフロー)の問題を解決するための再帰呼び出し方式とは、再帰関数の実行結果を演算に使用せずに直接返すように、前の関数の状態を維持する必要がない再帰関数を記述することである.
Butテールが正常に動作するように、プラットフォームはTail Call Optimizationをサポートする必要があります.
// 일반 재귀함수
function factorial(n) {
if (n === 1) {
return 1;
}
return n * factorial(n -1);
};
// 꼬리 재귀함수
function factorialTail(n, acc) { //acc: accumulator
if (n === 1) {
return acc;
}
return factorialTail(n - 1, acc * n);
//일반 재귀에서의 n * factorial(n - 1)과 달리 반환값에서 추가연산이 필요없음
}
function factorial(n) {
return factorialTail(n, 1);
}
Reference
この問題について(尻尾耳について...), 我々は、より多くの情報をここで見つけました https://velog.io/@inusneo/꼬리재귀에-대하여テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol