顺序打印N位数字
运用递归写了面试题的算法,感觉可以优化,希望大神帮看看
1 void Print(char *Number,int position,int N,int pos) 2 { 3 if(position>N-1) 4 { 5 cout << Number+pos<<endl; 6 if(*(Number+N-1) == '9') 7 { 8 9 char *pEnd =Number+N-1; 10 *pEnd+=1; 11 while(*pEnd == '9'+1) 12 { 13 *pEnd = '0'; 14 *(--pEnd)+=1; 15 16 } 17 if(pEnd >=Number+pos) 18 cout << Number+pos << endl; 19 else if(pEnd != Number-1) 20 cout << pEnd << endl; 21 22 } 23 return; 24 } 25 26 for(int i = 1;i<=9;++i) 27 { 28 29 char p='0'; 30 Number[position] = i+p; 31 Print(Number,position+1,N,pos); 32 33 } 34 35 } 36 37 void PrintNumber(int n) 38 { 39 if(0 == n) 40 return; 41 char *Number = new char[n+1]; 42 int i = 0; 43 for(; i!=n; ++i) 44 Number[i]='0'; 45 Number[i]='\0'; 46 for(int i = n-1; i >=0; --i) 47 { 48 49 Print(Number,i,n,i); 50 51 } 52 delete []Number; 53 }