Introdução a Recursão
Publicado por Rafael 09/03/2007
[ Hits: 6.199 ]
Homepage: nenhum
Um exemplo simples de recursão. Espero que sirva de base para ajudar a compreeender o uso do algoritmo de quicksort e busca binária.
Neste exemplo eu preencho um vetor com 11 posições(0 à 11) que armazena ponteiros para pontos, sempre visitando a posição média do vetor e em seguida e média da média e assim por diante.
Enquanto isso, vou armazenando os pontos médios dos pontos armazenados nas extremidades.
#include <iostream.h> struct ponto{ float x; float y; }; void X(ponto** p, ponto* p1, ponto* p2, int i, int f){ int novapos; if ((i+f) % 2 == 1){ novapos = ((i+f)+1)/2; } else { novapos = (i+f)/2; } if (p[novapos]==NULL) { ponto *np = (ponto*) malloc(sizeof(ponto*)); (*np).x = ((*p1).x + (*p2).x)/2; (*np).y = ((*p1).y + (*p2).y)/2; p[novapos] = np; X(p, p1, np, i, novapos); X(p, np, p2, novapos, f); } } int main() { ponto* pini = (ponto*) malloc(sizeof(ponto*)); ponto* pfim = (ponto*) malloc(sizeof(ponto*)); (*pini).x = 0; (*pini).y = 0; (*pfim).x = 10; (*pfim).y = 10; ponto **p = (ponto**) malloc(11*sizeof(ponto*)); p[0] = pini; p[10] = pfim; X(p, pini, pfim, 0, 10); // Imprime os resultados no Console for (int i=0;i<=10;i++){ cout<<"-------"<<endl; cout<<i<<endl; cout<<"x:"<<(*p[i]).x<<endl; cout<<"y:"<<(*p[i]).y<<endl; cout<<"-------"<<endl; } return 0; }
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Estou com sede em aprender sobre o nosso querido Linux. (1)
big linux sem audio como resolver (2)
Como faz para dar um update-grub por shell script [RESOLVIDO] (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta