2
我是一名剛剛學習數據結構的計算機工程專業的學生。今天的演講將遞歸函數作爲解決因式問題或排序問題的簡單方法。我的教授使用了河內的Towers例子,我真的很想確定我理解遞歸函數被調用的順序。我試着一步一步地寫出函數如何執行,但我沒有得到正確的序列。C++ - 不理解遞歸函數的流程
我將在下面發佈我的源代碼,它非常簡單。如果有人能幫我解釋,我會非常感激。謝謝!
void hanoi(int N, char S, char D, char I){
//Step1: Anchor Value or Base Case
if(N==1){
cout <<"Move " << N << " from " << S << " to " << D << endl;
}
else {
//Step2: Make progress towards base case
hanoi(N-1, S, I, D);
cout << "Move " << N << " from " << S << " to " << D << endl;
hanoi (N-1, I, D, S);
}
}
int main(){
int N; //Number of disks
cout << "Enter number of discs: " << endl;
cin >> N;
char S = 'S'; //Source
char D = 'D'; //Destination
char I = 'I'; //Intermediary
hanoi(N, S, D, I);
system("pause");
}
你不明白什麼? – 2014-09-04 18:29:42
我試圖從邏輯上理解遞歸函數如何流動。我使用N = 3作爲我的輸入,並且每次執行河內函數時都要跟蹤。 – 2014-09-04 18:41:12
[添加信息,請澄清你的問題。](http://stackoverflow.com/posts/25672631/edit) – 2014-09-04 18:49:28