Obrigada pela explicação, mas então... antes eu fiz algo parecido com isso, meu else tinha ficado: else return ((k%2) + 10 * (bin(k/2))); 
Só que agora eu queria pegar o que eu fiz e usar recursão de cauda, porque ai não é precisaria guardar a posição onde foi feita a chamada... tipo:
int fatorial(int num) 
 { 
 if (num == 1) 
 return num; 
 else 
 return num * fatorial(num - 1); 
}
Essa é a recursão sem cauda, e com cauda ficaria: 
int fatorial_aux(int num, int parcial) 
{ 
 if (num == 1) 
 return parcial; 
 else 
 return fatorial_aux((num - 1), (parcial * num)); 
} 
 
int fatorial_cauda(int num) 
{ 
 return fatorial_aux(num, 1); 
} 
Por isso tentei fazer (como tá no código que postei inicialmente) o return como "else return bin((k/2), (k%2) + (10 * r));".
 
Caso minha explicação tenha fica confusa, posso tentar explicar melhor o que pretendia fazer com o código. Mas já te agradeço pela ajuda :)