paulo1205
(usa Ubuntu)
Enviado em 26/03/2016 - 01:43h
Normalmente, quando se pede conversão de binário para decimal ou vice-versa, o número binário costuma ser representado como string. Veja que, numa máquina com inteiros de 32 bits, você precisaria de 32 dígitos binários para representar todos os possíveis valores inteiros. No entanto, com a notação que você empregou, você só consegue representar dez bits.
Além disso só existirá conversão realmente se a saída também for uma string. Se você converter de string para inteiro, na prática esse inteiro continua com uma representação binária na memória do computador. Nesse sentido, a função que converte de binário para decimal é
printf(), quando você usa a conversão "%d".
De todo modo, o que se faz para converter um loop para funo recursiva é reprojetar a função para se comportar como uma iteração do loop, e chamar a si mesma com os dados que seriam usados na próxima iteração.
Por exemplo, veja abaixo duas maneiras de calcular a fatorial de um número, sendo uma delas por laço de repetição e outra por chamada recursiva.
unsigned fat_loop(unsigned n){
unsigned fat=1u;
while(n>1u)
fat*=n--; // Próxima iteração usa n-1 (decrementando n).
return fat;
}
unsigned fat_recurse(unsigned n){
// Próxima iteração usa n-1 via chamada recursiva.
return n>1u? n*fat_recurse(n-1u): 1u;
}