仕方が無い。
上のswitch版をこれに置き換えればたぶん大丈夫。

void printR_(int n,char*a,char*b){
    if(n == 0)return;
    printR_(n/10,a+1,b+1);
    n %= 10;
    if(n > 4){
        if(n==9)b = a + 1;
        else putchar(*b);
        n -= 5;
    }
    if(n==4){
        putchar(*a);
        putchar(*b);
    }else{
        while(n-- != 0)putchar(*a);
    }
}