Função para escrita de um número em notação binária através de recursão
Publicado por Perfil removido (última atualização em 17/04/2012)
[ Hits: 5.919 ]
Este programa traz um função recursiva que escreve na tela em base 2 (base binária) um número fornecido previamente.
No programa ela é usada em teste para os números de 1 a 100.
Ele adentra em si mesmo até encontrar o caso-limite, que é a chamada para zero.
Depois ele retorna das chamadas escrevendo o que foi encontrado. Deste modo ele não imprime o número ao contrário.
Há um tratamento de exceção no início através de uma variável estática interna à função usada como "flag".
Ela sinaliza se o zero encontrado foi fornecida na primeira chamada ou se é um caso final onde o número foi inteiramente dividido.
Se for um caso inicial, ele imprime este zero. Senão ele retorna das chamadas.
Isso permite que nos outros casos não sejam escritos zeros no início dos números.
Como sempre, aguardo por bugs.
#include <stdio.h>
#define LIMITE 100
void bin (int n) {
static int flag=0;
if (!n) {
if (!flag) putc('0', stdout);
else flag=0;
return;
}
flag=1;
bin(n>>1);
putc('0'+(n&1), stdout);
return;
}
int main (void) {
int i;
for (i=0; i<=LIMITE; i++) {
printf ("%d\t",i);
bin (i);
putc('\n', stdout);
}
return 0;
}
Calculo de fatorial em C++ com o Qt Creator
Tabuada de um determinado número
librePods: liberte seus AirPods em 2026
Bluefin - A nova geração de ambientes de trabalho Linux
Como atualizar sua versão estável do Debian
Instalando e definindo as novas fontes Adwaita no GNOME
Configurar aviso da temperatura da CPU no Conky
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Conky não mostra temperaturas da CPU no notebook (15)
Após todos esses anos... youtube! (2)
archlinux resolução abaixou após atualização [RESOLVIDO] (19)
Registro do 'last&qu... errado [RESOLVIDO] (9)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (2)









