劍指offer 17:打印從1到最大的n位數

題意

輸入數字n,按順序打印出從1到最大的n位十進制數.比如輸入3,則打印輸出1,2,3一直到最大的三位數999.利用全排列的思想,把每一位都的所有情況利用遞歸的方式列舉出來.

代碼

//核心函數,len表示位數,index表示當前的位數+1
void Permutations(char *str, int len, int index) {
    //如果當前的位數是len,說明已經到了最後一位(最後一位是\0)
    if (index == len) {
        //輸出沒管0
        puts(str);
        return;
    }
    //利用for循環,爲當前的位置賦值爲0-9
    for (int i = 0; i <10; i++) {
        str[index] = i + '0';
        //下一位,index+1這個位置繼續做同樣的操作,直到最後一位輸出並返回
        Permutations(str, len, index + 1);
    }
}

void print_num(int n) {
    char str[n + 1];
    str[n] = 0;
    Permutations(str, n, 0);

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章