0

如何使用单个递归函数以正确的顺序打印未知长度的整数的数字?

int digit(int n)
{       
    if (n==0)
    {
    }
    else
    {
        cout << n%10 << endl;
        return digit(n/10);
    }
}
//the above function prints it in reverse
4

2 回答 2

1

这会奏效;

[编辑:代码适用于输入,即 +ve、0、-ve 整数;它只打印数字,而不是 -ve 符号]

void digit(int n) //no need to return a value
{   
    if (n < 0)
        n = -1*n;
    if (n/10 > 0) //no need have else blocks
    {
        //for the correct order, make the recursive call first
        digit(n/10);            
    }
    //print when you reach the most significant digit
    cout << n%10 << endl;
}
于 2013-04-10T08:54:41.283 回答
1

您必须考虑在单个函数调用中采取什么步骤以及将什么委托给下一个函数调用。打印一个数字似乎是一个不错的选择。取最不重要(最右边)的数字很容易:它是整数除以 10 的余数。

由于您想最后输出最低有效数字,因此您必须首先委托给您的函数:

digit( n / 10 );
std::cout << n % 10;
于 2013-04-10T08:52:15.053 回答