В този урок ще научите за рекурсията в JavaScript с помощта на примери.
Рекурсията е процес на самоизвикване. Функция, която се извиква, се нарича рекурсивна функция.
Синтаксисът за рекурсивна функция е:
function recurse() ( // function code recurse(); // function code ) recurse();
Тук recurse()
функцията е рекурсивна функция. Той се извиква вътре във функцията.
Рекурсивната функция трябва да има условие да спре да се самоизвиква. В противен случай функцията се извиква за неопределено време.
След като условието е изпълнено, функцията спира да се самоизвиква. Това се нарича основно условие.
За да предотвратите безкрайна рекурсия, можете да използвате оператора if … else (или подобен подход), където единият клон прави рекурсивното извикване, а другият не.
Така че, обикновено изглежда така.
function recurse() ( if(condition) ( recurse(); ) else ( // stop calling recurse() ) ) recurse();
Един прост пример за рекурсивна функция би бил отброяването на стойността до 1.
Пример 1: Печат на числа
// program to count down numbers to 1 function countDown(number) ( // display the number console.log(number); // decrease the number value const newNumber = number - 1; // base case if (newNumber> 0) ( countDown(newNumber); ) ) countDown(4);
Изход
4 3 2 1
В горната програма потребителят предава число като аргумент при извикване на функция.
Във всяка итерация стойността на числото се намалява с 1 и countDown()
се извиква функция, докато числото е положително. Тук newNumber> 0
е основното условие.
Това рекурсивно повикване може да бъде обяснено в следните стъпки:
countDown (4) отпечатва 4 и обаждания countDown (3) countDown (3) отпечатва 3 и обаждания countDown (2) countDown (2) отпечатва 2 и обаждания countDown (1) countDown (1) отпечатва 1 и обаждания countDown (0)
Когато числото достигне 0 , основното условие е изпълнено и функцията вече не се извиква.
Пример 2: Намерете факториал
// program to find the factorial of a number function factorial(x) ( // if number is 0 if (x === 0) ( return 1; ) // if number is positive else ( return x * factorial(x - 1); ) ) const num = 3; // calling factorial() if num is non-negative if (num> 0) ( let result = factorial(num); console.log(`The factorial of $(num) is $(result)`); )
Изход
Факториалът на 3 е 6
Когато извикате функция factorial()
с положително цяло число, тя ще се извика рекурсивно чрез намаляване на номера.
Този процес продължава, докато числото стане 1 . След това, когато числото достигне 0 , се връща 1 .
Работа с рекурсия на JavaScript във FactorialТова рекурсивно повикване може да бъде обяснено в следните стъпки:
факториал (3) връща 3 * факториал (2) факториал (2) връща 3 * 2 * факториал (1) факториал (1) връща 3 * 2 * 1 * факториал (0) факториал (0) връща 3 * 2 * 1 * 1