题目要求:
输入一个正整数m,输出m位2进制的所有取值情况,从小到大输出,每个输出结果用换行符分割。
解题思路:
通过递归调用,从第1个到第m个数组元素分别置0和置1,然后当从1到m所有的元素都置0或者置1之后,进行输出。
程序代码:
#includeusing namespace std;int m = 0;void fun(int *a,int n){ if(n>=m) { for(int i=0;i >m; int * a = new int [m]; fun(a,0); return 0;}
当m=3的时候,输出结果为:
0 0 0
0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1程序运行的示例图:
如果,m不是一个由用户输入的值,而是一个固定的值,还可以使用m层循环来实现该程序:
#include但是很明显,该程序不但具有局限性,还比较复杂,不如递归的方法。using namespace std;int main(){ int m=3; for(int i=0;i<2;i++) { for(int j=0;j<2;j++) { for(int k=0;k<2;k++) { cout< <<" "< <<" "< <