为什么此功能以错误的顺序打印出数字?

时间:2014-01-27 18:18:23

标签: c++

我无法弄清楚为什么这个递归函数会继续以错误的顺序打印出数字。例如,当它应该是1234时打印出4321.有人可以帮我解决这个问题吗?

谢谢

    #include <iostream>
using namespace std;

void printIt(int);
//Why does this program print out the digits in the wrong order?
//See p. 10

int main()
{
   printIt(1234);
   cout << endl;
}

void printIt(int n)
{
    cout << n%10;
    if (n >= 10)
        printIt(n/10);

}

2 个答案:

答案 0 :(得分:8)

想一想:

1234 % 10 = 4 // remainder of 1234 / 10 = 4
1234 / 10 (with rounding) = 123
123 % 10 = 3
123 / 10 (with rounding) = 12
12 % 10 = 2
12 / 10 (with rounding) = 1
1 % 10 = 1

答案 1 :(得分:1)

该功能按您指定的顺序打印数字。您首先输出最后一位数字,但需要先输出数字中的第一位数字。我会按以下方式重写函数

void printIt(int n)
{
    const int base = 10;
    int digit = n % base;

    if ( n /= base ) printIt( n );

    cout << digit;
}