我无法弄清楚为什么这个递归函数会继续以错误的顺序打印出数字。例如,当它应该是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);
}
答案 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;
}