Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用递归按正确顺序打印整数的数字_C++ - Fatal编程技术网

C++ 使用递归按正确顺序打印整数的数字

C++ 使用递归按正确顺序打印整数的数字,c++,C++,如何使用单个递归函数按正确顺序打印未知长度整数的数字 int digit(int n) { if (n==0) { } else { cout << n%10 << endl; return digit(n/10); } } //the above function prints it in reverse int位(int n) { 如果(n==0) { } 其

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

int digit(int n)
{       
    if (n==0)
    {
    }
    else
    {
        cout << n%10 << endl;
        return digit(n/10);
    }
}
//the above function prints it in reverse
int位(int n)
{       
如果(n==0)
{
}
其他的
{

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

由于您希望最后输出最低有效位,您必须首先委托给您的函数:

digit( n / 10 );
std::cout << n % 10;
数字(n/10);
std::cout这会起作用

[编辑:该代码适用于输入,即+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;
}
void digit(int n)//无需返回值
{   
if(n<0)
n=-1*n;
if(n/10>0)//不需要有else块
{
//为了获得正确的顺序,首先进行递归调用
数字(n/10);
}
//达到最高有效位时打印

到目前为止,你写了什么代码?std::你能告诉我们一些数字的数字顺序不正确吗?:OStackoverflow不是一个论坛,也不是一个代码编写或调试服务。只有当你试图让代码正常工作但失败时,你才需要做自己的研究。即使这样,你也需要做o提供完整的背景,包括您尝试的内容、您认为它不起作用的原因以及它不起作用时发生的情况。
数字
为什么有返回值?它意味着什么?(至于获得正确的顺序,您所要做的就是颠倒
cout
和递归的顺序。)那么他的返回值呢?在他澄清他的返回值应该是什么意思之前,很难说他应该做什么。我在他展示任何代码之前写下了答案。我从返回值的描述中没有得到任何意义。谢谢,我使用返回值,因为我一直在使用int数字,而不是void数字。你帮了很大的忙。Y您可能希望将输出移出测试(并将测试更改为
n/10>0
)。这将确保至少有一个数字。(我想知道如何将每个数字转换为
int
。我假设其中一个目标是自己进行转换,输出类似
“01234546789”[n%10]
。我无法确切理解你的意思。我已经测试了上述代码,它对我有效。你说的有边界情况吗?对于
数字(0)
的情况,解决方案不会打印任何内容。对于任何负值也不会打印。