递归版本:
void PrintData(char* pData, int size)
{
// 从第一个不为'0'的位置开始输出
for (int idx = 0; idx < size; ++idx)
{
if (pData[idx] == '0') continue;
std::cout << (pData + idx) << std::endl;
return;
}
}
void Print1ToMax(char* pData, int size, int curIdx)
{
if (curIdx == size) // 赋值完毕
{
PrintData(pData, size);
return;
}
// 为curIdx位赋值,然后递归为curIdx + 1位赋值
for (int curData = 0; curData <= 9; ++curData)
{
pData[curIdx] = curData + '0';
Print1ToMax(pData, size, curIdx + 1);
}
}
void Print1ToMax(int bitCount)
{
if (bitCount < 1) return;
char* pData = new char[bitCount + 1];
memset(pData, '0', bitCount);
pData[bitCount] = '\0'; // 尾部加上'\0',便于直接打印输出
Print1ToMax(pData, bitCount, 0);
}