通過引用的方式來傳值,具體的實現的方法如下
void pc(int m,int n,int &position,int (&a)[100]) { //如果運算得到那個數 if (position == m ) { for (int i = 0; i < m; i++) { cout << a[i]<<' '; } cout << endl; position--; } else//如果家沒有到我們要找的m就繼續尋找 { for (int i = 0; i < n; i++) { if (position == 0) { a[position] = i + 1; position++; pc(m, n, position,a); } else { if (i > (a[position - 1] - 1)) { a[position] = i + 1; position++; pc(m, n, position,a); } } } position--; } }
如果我們想要實現列舉出n個元素抽取的所有的情況,我們通過一一的排列組合的方法太麻煩而且我們要知道遞歸的效率是非常的低的,我們通過一下方法實現全遍歷
int n;//n是要排列的個數 int all = 1 << n; for (int i = 0; i < all; i++) { //其實二進制的一步一步的進位就是對n個數的全遍歷 }