Pular para o conteúdo

Função para escrita de um número em notação binária através de recursão

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.
Perfil removido removido
Hits: 6.019 Categoria: C/C++ Subcategoria: Introdução
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

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.
Download binary001.c Enviar nova versão

Esconder código-fonte

#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;

}

O poderoso 'return'

Tipos de ordenação - BubbleSort - SelectSort - Shellsort - Mergesort

Simulador de Cronômetro com 2 digitos

Média das idades

D'GAME

#1 Comentário enviado por emccomputadores em 17/04/2012 - 18:58h
Muito interessante a solução dada, parabéns.

Contribuir com comentário

Entre na sua conta para comentar.