função recursiva de JavaScript
Resumo: neste tutorial, você vai aprender como usar a técnica de recursão para desenvolver uma função recursiva de JavaScript, que é uma função que se chama a si mesma.
Introdução às funções recursivas de JavaScript
uma função recursiva é uma função que se chama a si mesma até que não. e esta técnica é chamada recursão.
suponha que você tem uma função chamada recurse()
. O recurse()
é uma função recursiva se ele se chama dentro de seu corpo, assim:
Code language: JavaScript (javascript)function recurse() { // ... recurse(); // ...}
uma função recursiva sempre tem uma condição para parar de se chamar, caso contrário, ele se chamará indefinidamente. Assim, uma função recursiva tipicamente se parece com o seguinte:
Code language: JavaScript (javascript)function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
geralmente, funções recursivas são usadas para quebrar um grande problema em menores. Você pode descobrir que eles são fortemente usados nas estruturas de dados, como árvores binárias e grafos e algoritmos, como busca binária e quicksort.
JavaScript recursive function examples
let’s take some examples of using the recursive functions.
1) um exemplo simples de função recursiva JavaScript
suponha que você precisa desenvolver uma função que conta de um número especificado para 1. Por exemplo, a contagem regressiva de 10 a 1:
321
a seguir mostra O countDown()
função:
Code language: JavaScript (javascript)function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Este countDown(3)
mostra apenas o número 3.
para contar do número 3 para 1, você pode:
- mostra o número 3.
- e ligue para o
countDown(2)
que mostra o número 2. - e chamar o
countDown(1)
que mostra o número 1.
As seguintes alterações countDown()
uma função recursiva:
Este countDown(3)
será executado até que a pilha de chamada for excedido o tamanho, como este:
Code language: JavaScript (javascript)Uncaught RangeError: Maximum call stack size exceeded.
… porque ele não tem a condição de parar de chamar a si própria.
A contagem irá parar quando o próximo número for zero, portanto, adicionamos uma condição if Como segue:
saída:
321
ocountDown()
parece funcionar como esperado.
no entanto, como mencionado no tutorial do tipo de função, o nome da função é uma referência ao objeto da função real.
se algures no código, o nome da função estiver definido como nulo, a função recursiva deixará de funcionar.
Por exemplo, o código a seguir irá resultar em um erro:
Code language: JavaScript (javascript)let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Erro:
Code language: JavaScript (javascript)Uncaught TypeError: countDown is not a function
Como o script funciona:
- First, assign the
countDown
function name to the variablenewYearCountDown
. - econd, set the
countDown
function reference tonull
. - hird, call the
newYearCountDown
function.
O código faz com que um erro, porque o corpo de countDown()
referências de função countDown
nome da função a qual foi definida como null
no momento da chamada da função.
para corrigi-lo, você pode usar uma expressão de função nomeada como segue:
2) calcular a soma dos dígitos de um exemplo de número
dado um número, por exemplo, 324, calcular a soma dos dígitos 3 + 2 + 4 = 9.
Para aplicar a técnica recursiva, você pode usar as seguintes etapas:
f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)
Assim
f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3
a seguir ilustra O sumOfDigits()
função recursiva:
Como funciona:
Resumo
- Uma função recursiva é uma função que chama a si mesmo até que ele não
- Uma função recursiva sempre tem uma condição que interrompe a função de chamar a si própria.
- este tutorial foi útil ?
- YesNo