无法清晰用递归设计程序

img


我用递归无法设计出来,没有清晰的思路,大佬能否提点一二🙏🙏球球了

用函数求出 n % 10 作为当前末位数的数字d,存放在函数栈,然后n / 10继续递归求值。函数返回时,就打印函数栈d对应字符或者说数字。
递归终止条件:n == 0

假设前提条件,输入的n >= 0,对于负数情况,由于题目没有说明负号如何处理,这里不处理,如果要处理也一样存放在string中。

下面例子提供了两种输出字符方式:函数栈,string。请自行根据实际需要调整,

void numToChar(int n, string& s)
{
    if (n == 0) {
        return;
    }

    numToChar(n / 10, s);
    int d = n % 10;
    s += d + '0';
    cout << d;
}

int main()
{
    int n;
    cin >> n;
    if (n < 0) return -1;
    else if (n == 0) cout << 0 << endl;

    string s;
    numToChar(n, s);

    cout << "\ns = " << s << endl;
    return 0;
}