大膽使用遞迴

2021-08-03 23:05:54 字數 1088 閱讀 9489

在我看來,遞迴彷彿就是多層迴圈(或者是迴圈層數可變)的替身,就比如我要寫乙個15層的迴圈,不能乙個乙個for迴圈寫下去吧 ,而是需要找到裡邊的規律,然後只改變呼叫函式的引數,就可以實現那個15層迴圈了

下邊簡單的以排列和組合兩個問題來總結一下遞迴的實現思想:

1.實現n個數的排列

今天想暴力解決乙個問題,想找到所有排列的情況,於是學習一下:**如下(摘自

public

static

void

permutation(string s, int ia, int n)

} else

}permutation(ss, ii, n-1);}}

}

組合思想為:

1.在n個數中選出1個數,有n中選法

2.在**剩下的**n-1個數中選出1個數,有n-1種選法

3.在**剩下的**n-2個數中選出1個數,有n-2種選法

…… n-1.在剩下的2個數中選出1個數

n.在剩下的1個數中選出1個數

於是可以發現,這些步驟是有規律的,可以使用遞迴;那麼遞迴結束條件就是當剩下的數只有乙個時結束

分析從含有m個數的陣列中選出乙個數:

int array=new

int[n];

for(j=0;i0]=a[j];

}

那麼剩下的陣列為:

int array1=new

int[n-1];

for(int i=0,k=0;iif(i!=j)

結束條件為:

if(n==1);
2.實現從陣列中選取n個數的排列
public

static

void

combination(string s, int ia, int n)

} else

combination(ss, ii, n-1);}}

}

覺得有點難消化,還是要好好看看………………………………..

大膽投資自我

不要放棄學生時代所學。大概很多人會說 大學裡學的東西,對現在的工作一點幫助都沒有。如果因此就將從前所學拋諸腦後,是很可惜的。人不太可能一輩子都做同乙個工作,持續花心力在學生時代所學的學科上,非但不是浪費,在轉職時反而能增加選擇的機會。柔性思考,多角度閱讀。現今職務有細分化的趨勢,在高度專業化之下,大...

大膽使用指向成員函式的指標

大膽使用指向成員函式的指標 指向成員函式的指標是c 中比較複雜的語法結構,然而,它卻是事件驅動和多執行緒環境中不可缺少的,特別是當從外部呼叫成員函式的時候。在多執行緒裡,每乙個執行緒都通過指向成員函式的指標呼叫這一函式。如果c 沒有這些語法特性,那麼在很多情況下進行c 程式開發會遇到很多麻煩。也許你...

大膽的投資自我

大膽的投資自我 不要放棄學生時代所學。大概很多人會說 大學裡學的東西,對現在的工作一點幫助都沒有。如果因此就將從前所學拋諸腦後,是很可惜的。人不太可能一輩子都做同乙個工作,持續花心在學生時代所學的學科上,非但不是浪費,在轉職時反而能增加選擇的機會。柔性思考,多角度閱讀。現今職務有細分化的趨勢,在高度...