JS再帰関数
8855 ワード
さいきかんすう
ある問題を解決する際に、構造が同じで小さい場合を解決することによってその問題を解決する方法を再帰(recursion)と呼ぶ.
再帰関数とは、呼び出し関数自体を指します.与えられた問題(構造が類似している)がより小さな問題に分けることができる場合、 .オーバーラップループが多数あるか、オーバーラップの度合い(ループ数)が予知できない場合、 .
再帰関数の一般的な形式
再帰は基本的に重複文であり、すべての再帰は重複文で表すことができる.
再帰には無限の重複を防ぐための脱出条件が必要である.の利点:アルゴリズムが再帰的であれば、プログラムの可読性が良い
欠点:呼び出すたびに値を返す前に新しい呼び出しスタックが作成され、メモリが 大量に消費されます.
再帰使用例箱1:フィボナッチ数列 ケース2:ブラウズツリー構造-JSON,DOM Tree JSON(JavaScript Object Notation)
データ交換用フォーマット
JSON例
文字列をJSONオブジェクトに変換します.
JSONルール(対象との差異)
JavaScriptオブジェクトJSONキーは引用符なしで、二重引用符を付けなければなりません.文字列値の文字列値は任意の形式の引用符とすることができます.二重引用符で囲まなければなりません
ある問題を解決する際に、構造が同じで小さい場合を解決することによってその問題を解決する方法を再帰(recursion)と呼ぶ.
再帰関数とは、呼び出し関数自体を指します.
function foo(){
foo();
}
再帰関数の使用に適しています再帰関数の一般的な形式
function recursive(input1, input2, ...) {
// 재귀의 기초 (base case)
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive Case
// 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
// 예1. someValue + recursive(input1Changed, input2Changed, ...)
// 예2. someValue * recursive(input1Changed, input2Changed, ...)
}
複文再帰は基本的に重複文であり、すべての再帰は重複文で表すことができる.
// 재귀
function factiorial(n) {
if (n === 0) {
return 1;
}
return n * factiorial(n - 1);
}
// 반복문
function factiorial(n) {
let result = 1;
for (let i = n; i > 0; i--) {
result = result * i;
}
return result;
}
家に帰る条件再帰には無限の重複を防ぐための脱出条件が必要である.
function factorial(n) {
// Base Case
// n이 0이면 재귀를 더 이상 진행하지 않음
if (n === 0) {
return 1;
}
// Recursive Case
return n * factorial(n - 1);
}
再帰的な利点と欠点欠点:呼び出すたびに値を返す前に新しい呼び出しスタックが作成され、メモリが
再帰使用例
データ交換用フォーマット
JSON例
const message = {
sender: "김코딩",
receiver: "나해커",
message: "해커야 알고리즘 풀기 대결할래?",
createdAt: "2021-08-02 19:08:02"
}
JSONオブジェクトを文字列に変換します.let transferableMessage = JSON.stringify(message);
console.log(transferableMessage);
// `{"sender":"김코딩","receiver":"나해커","message":"해커야 알고리즘 풀기 대결할래?","createdAt":"2021-08-02 19:08:02"}`
JSON.stringify()
関数を使用してシーケンス化文字列をJSONオブジェクトに変換します.
let packet = `{"sender":"김코딩","receiver":"나해커","message":"해커야 알고리즘 풀기 대결할래?","createdAt":"2021-08-02 19:08:02"}`;
let obj = JSON.parse(packet)
console.log(obj)
/*
{
sender: "김코딩",
receiver: "나해커",
message: "해커야 알고리즘 풀기 대결할래?",
createdAt: "2021-08-02 19:08:02"
}
*/
JSON.stringify()
とは逆のJSON.parse()
関数を使用して逆シーケンス化JSONルール(対象との差異)
JavaScriptオブジェクトJSONキーは引用符なしで、二重引用符を付けなければなりません.文字列値の文字列値は任意の形式の引用符とすることができます.二重引用符で囲まなければなりません
JSON
キーと値の間、およびキー値のペアの間にスペースを付けることはできません.Reference
この問題について(JS再帰関数), 我々は、より多くの情報をここで見つけました https://velog.io/@hoony0802/JS재귀-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol