递归大总结之打印大数1-n

来源:互联网 发布:刀锋铁骑伊达政宗数据 编辑:程序博客网 时间:2024/06/06 04:38

递归

#include<iostream>using namespace std;void PrintfNumber(char num[]){bool isBegin0 = true;int nlength = strlen(num);for (int i = 0; i < nlength; ++i){if (isBegin0&&num[i] != '0'){isBegin0 = false;}if (!isBegin0){cout << num[i];}}}void PrintToMaxDigits2(char *num, int length, int index){if (index == length - 1){PrintfNumber(num);return;}for (int i = 0; i < 10; i++){num[index + 1] = i + '0';PrintToMaxDigits2(num, length, index + 1);//}}void PrintToMaxofDigits(int n){if (n <= 0){return;}char *num = new char[n + 1];num[n] = '\0';for (int i = 0; i < 10; i++){num[0] = i + '0';PrintToMaxDigits2(num, n, 0);}}int main(){int n;cin >> n;PrintToMaxofDigits(n);system("pause");}
详解

//以n等于3为例void PrintToMaxDigits2(char *num, int length, int index){if (index == length - 1){PrintfNumber(num);return;}for (int i = 0; i < 10; i++){num[index + 1] = i + '0';PrintToMaxDigits2(num, length, index + 1);///*index=1;for (int i = 0; i < 10; i++){num[index + 1] = i + '0';PrintToMaxDigits2(num, 3, index + 1);if (index == length - 1){//打印了1-9,这时num[1]还是1,当num[1]是2时再打印1-9PrintfNumber(num);return;}}*/}}






0 0
原创粉丝点击