#include <stdio.h>
#include <stdlib.h>
void PrintToMaxNumRecursively(char *s,int lenght,int index)
{
if(index == lenght-1)
{
//Print(s);
int i;
//for(i=0;i<lenght;i++)
//{
printf("%s",s);
//}
printf("\n");
return;
}
int i;
for(i=0;i<10;i++)
{
s[index] = i + '0';
PrintToMaxNumRecursively(s,lenght,index+1);
}
}
void PrintToMaxNum(int n)
{
int i;
if(n == 0)
{
return;
}
char *s = (char*)malloc(sizeof(char)*(n+1));
s[n] = '\0';
for(i=0;i<10;i++)
{
s[0] = i+'0';
PrintToMaxNumRecursively(s,n,1);
}
free(s);
}
int main(void)
{
PrintToMaxNum(3);
return 0;
}
思路类似于李白打酒,先深度优先,达到位数后打印。然后回退,一层一层将对应位数字+1,