顺序打印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 }

 

posted @ 2015-08-08 00:38  jkftheworld1  阅读(172)  评论(0)    收藏  举报
www.baidu.com