Articles

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:

function recurse() { // ... recurse(); // ...}
Code language: JavaScript (javascript)

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:

function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Code language: JavaScript (javascript)

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:

function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Code language: JavaScript (javascript)

Este countDown(3) mostra apenas o número 3.

para contar do número 3 para 1, você pode:

  1. mostra o número 3.
  2. e ligue para o countDown(2) que mostra o número 2.
  3. e chamar ocountDown(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:

Uncaught RangeError: Maximum call stack size exceeded.
Code language: JavaScript (javascript)

… 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:

let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Code language: JavaScript (javascript)

Erro:

Uncaught TypeError: countDown is not a function
Code language: JavaScript (javascript)

Como o script funciona:

  • First, assign the countDown function name to the variable newYearCountDown.
  • 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