recursão é um conceito poderoso no campo da ciência da computação, mas pode ser difícil para iniciantes para entender. Recursão envolve uma função ou método invocando -se repetidamente em um contexto diferente , até um contexto de "base" é atingido e voltou . Em outras palavras , para resolver um problema , o programa recontexualizes como um problema um pouco diferente . Ao implementar um algoritmo recursivo , considere sempre a forma mais simples do problema e estabelecer este exemplo simplificado como um " caso base ", que todas as outras versões do problema fará referência . Instruções
1
Defina o cabeçalho de uma função - o nome da função e seus insumos. Por exemplo, uma função que encontra um número de Fibonacci em particular pode ter a seguinte aparência :
fib (int n) {}
Aqui , a função calcula a " enésima " número de Fibonacci na seqüência .
2
Anote como a função será chamada genericamente. Por exemplo, quando você chama fib ( ), você vai usar um número inteiro como argumento e registrar o número inteiro que ele calcula :
int resultado = fib ( x);
3
Definir o "caso base" de seu problema de recursão. Pode haver vários casos base . Como a seqüência de Fibonacci requer dois números, você vai precisar de dois casos base para implementar sua solução
if ( n == 0) return 0; . If ( n == 1) return 1;
< br > 4
Definir o passo recursivo de seu problema de recursividade como uma versão menor, mais simples do mesmo problema , que faz referência ao exemplo de invocação a partir do Passo 2. No nosso exemplo , a sequência é uma sequência de Fibonacci matemático em que cada número da linha é a soma dos dois anteriores números em sequência . O algoritmo para encontrar um número de Fibonacci particular deve , portanto, invocar -se duas vezes, uma para o número anterior e uma vez para o número antes do número anterior :
int result1 = fib (n- 1); int result2 = fib ( n- 2);
retornar result1 + result2 ;
5
Coloque a função em conjunto, por exemplo :
fib (int n) {if ( n == 0) return 0; //caso base 1else if ( n == 1) return 1; caso //base 2
else {//recursiva stepint result1 = fib (n- 1); int result2 = fib (n- 2);
retornar result1 + result2 ;} }
a estrutura do " caso base " e " passo recursivo " será o mesmo para todas as funções recursivas , embora possa haver vários casos base e as etapas recursivas longos .