Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Diskussion über Rekursion in JavaScript

Ausführliche Diskussion über Rekursion in JavaScript

王林
王林Original
2024-08-29 14:39:32877Durchsuche

Recursion in JavaScript সম্পর্কে বিস্তারিত আলোচনা

Rekursion ist eine Technik, bei der sich eine Funktion selbst aufruft. Es handelt sich um ein Programmiermuster, das dieses Problem in kleinere unterteilt, um ein größeres Problem zu lösen. Mithilfe der Rekursion in JavaScript können wir Dinge wie Schleifen oder Iterationen ausführen, aber die Rekursion kann einfacher und transparenter sein, um einige Probleme zu lösen.

Wie funktioniert Rekursion?

Rekursion besteht aus zwei Hauptteilen:

  1. Basisfall: Dies ist der Zustand, in dem sich die Funktion nicht mehr selbst aufruft. Es fungiert als Haltepunkt für die rekursive Funktion. Eine rekursive Funktion ohne Basisfall kann manchmal einen Stapelüberlauf verursachen (d. h., dass aufgrund wiederholter Aufrufe der Funktion nicht mehr genügend Speicher vorhanden ist).
  2. Rekursiver Fall: Dies ist der Teil, in dem sich die Funktion selbst aufruft und versucht, das Problem zu lösen, indem sie es in kleinere Teile zerlegt.

zB:

  1. Fakultätsberechnung: Faktoriell ist die Summe der Produkte aller Zahlen von einer Zahl bis 1. Zum Beispiel: n!=n×(n−1)×(n−2)×...×1 5! = 5 * 4 * 3 * 2 * 1 = 120.

Fakultät ist das Produkt aller positiven ganzen Zahlen von dieser Zahl bis 1.

function factorial(n) {
    // Base case: n যদি 1 হয়, তাহলে 1 রিটার্ন করো
    if (n === 1) {
        return 1;
    }
    // Recursive case: n * factorial(n-1)
    return n * factorial(n - 1);
}

console.log(factorial(5)); // Output: 120

Hier ruft sich die Fakultätsfunktion selbst auf, bis n 1 wird. Wenn n 1 ist, ruft sich die Funktion nicht mehr selbst auf und gibt 1 zurück. Dieses Ergebnis wird nach und nach durch vorherige Aufrufe zurückgegeben, und der ursprüngliche Aufruf gibt 120 als Endergebnis zurück.

Wenn „Fakultät(5)“ aufgerufen wird, ruft es zunächst 5 * Fakultät(4) usw. auf, bis „Fakultät(0)“ die Basisfallbedingung erfüllt.

  1. Fibonacci-Reihe: Die Fibonacci-Reihe ist ein berühmtes Beispiel, bei der jede Zahl die Summe der beiden vorherigen Zahlen ist. F(n)=F(n−1)+F(n−2)

Die Fibonacci-Reihe ist eine Zahlenreihe, bei der die ersten beiden Zahlen 0 und 1 sind und jede nachfolgende Zahl die Summe der beiden vorherigen Zahlen ist. Zum Beispiel 0, 1, 1, 2, 3, 5, 8, …

function fibonacci(n) {
    // Base cases: n যদি 0 বা 1 হয়, সরাসরি n রিটার্ন করো
    if (n === 0 || n === 1) {
        return n;
    }
    // Recursive case: fibonacci(n-1) + fibonacci(n-2)
    return fibonacci(n - 1) + fibonacci(n - 2);
}

console.log(fibonacci(6)); // Output: 8

Erklärung:

  • Basisfälle: Wenn der Wert von n 0 ist, gibt fibonacci(0) 0 zurück. Wenn der Wert von n 1 ist, gibt fibonacci(1) 1 zurück.
  • Rekursiver Fall: In jedem anderen Fall ruft sich fibonacci(n) selbst mit n−1 und n−2 auf und gibt deren Summe zurück.

Antwort Erklärung:

  1. fibonacci(0) = 0
  2. fibonacci(1) = 1
  3. fibonacci(2) = fibonacci(1) + fibonacci(0) = 1 + 0 = 1
  4. fibonacci(3) = fibonacci(2) + fibonacci(1) = 1 + 1 = 2
  5. fibonacci(4) = fibonacci(3) + fibonacci(2) = 2 + 1 = 3
  6. fibonacci(5) = fibonacci(4) + fibonacci(3) = 3 + 2 = 5
  7. fibonacci(6) = fibonacci(5) + fibonacci(4) = 5 + 3 = 8

এভাবে fibonacci(6) এর মান দাঁড়ায় 8, যা 6-তম ফিবোনাচি সংখ্যা।

  1. Tree Traversal: Tree ডেটা স্ট্রাকচারে একটি Recursive Function ব্যবহার করে DFS (Depth-First Search) করা যেতে পারে।
javascriptCopy code
function traverseTree(node) {
    console.log(node.value);
    node.children.forEach(child => traverseTree(child));
}

const tree = {
    value: 1,
    children: [
        { value: 2, children: [] },
        { value: 3, children: [
            { value: 4, children: [] },
            { value: 5, children: [] }
        ] }
    ]
};

traverseTree(tree);
// Output:
// 1
// 2
// 3
// 4
// 5

Recursion এর উপকারিতা এবং অসুবিধা

  1. উপকারিতা
  2. কোড সরলতা: Recursion জটিল সমস্যাকে সহজভাবে প্রকাশ করতে সাহায্য করে, বিশেষ করে এমন সমস্যা যেখানে সমস্যাগুলি নিজের অনুরূপ।
  3. কোড পুনরাবৃত্তি: Recursion প্রায়শই কোডের পুনরাবৃত্তি দূর করে এবং সমাধানগুলোকে ছোট এবং পরিষ্কার করে।
  4. কিছু নির্দিষ্ট সমস্যা সমাধানে কার্যকর: যেমন Tree এবং Graph ডেটা স্ট্রাকচার traversal, অথবা Mathematical series এবং sequences।
  5. অসুবিধা
  6. পারফরম্যান্স: প্রত্যেকটি recursive কল একটি নতুন execution context তৈরি করে, যা stack memory তে সংরক্ষণ করা হয়। অতিরিক্ত recursion এর ফলে stack overflow এর ঝুঁকি থাকে।
  7. জটিলতা: সাধারণ লুপের তুলনায় কিছু ক্ষেত্রে recursion বোঝা কঠিন হতে পারে, বিশেষ করে শুরুতে।
  8. অকার্যকর ফাংশন: কিছু ক্ষেত্রে, recursion অকার্যকর হতে পারে, যদি recursive ফাংশনের প্রতিটি কলের ফলে অনেক অপ্রয়োজনীয় গণনা হয়। এক্ষেত্রে Memoization বা Iterative পদ্ধতির ব্যবহার অধিক কার্যকরী।

Das obige ist der detaillierte Inhalt vonAusführliche Diskussion über Rekursion in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn