加数(必须用递归做)

给出一个正整数n(1≤n≤100000)。在n的右边加入n的一半,然后在新数的右边再加入n的一半的一半,一直进行,直到不能再加为止。
例如 n=37 37的一半为18(取整数)加到n的右边成为
3718 18的一半为9,加到新数的右边成为
37189 9的一半为4,加到新数的右边成为
371894 4的一半为2,加到新数的右边成为
3718942 2的一半为1,加到新数的右边成为
37189421 1的一半为0,加数结束,最后得到的数是一个8位的数。


#include <iostream>
using namespace std;
int main()
{
    int n;
    cin >> n;
    int nh = n / 2;
    int res = n;
    while (nh) {
        int tmp = nh;
        int t = 1;
        while (tmp) {
            t = t * 10;
            tmp = tmp / 10;
        }
        res=res*t + nh;
        nh = nh / 2;
        
    }
    cout << res;
    return 0;
}