我在尾遞歸閱讀如下這個遞歸函數是如何自動轉換爲迭代函數的?
尾遞歸是指在最後一行遞歸調用。尾 遞歸可以通過封閉 while循環和替換遞歸調用與每 函數參數的一個分配機構消除。
例如
void print(Iterator start, Iterator end, ostream& out=cout) {
if(start == end)
return;
out << *start++ << endl;
print(start, end, out);
}
轉換爲迭代由上述說明書作爲
void print(Iterator start, Iterator end, ostream& out=cout) {
while(true) {
if(start == end)
return;
out << *start++ << endl;
}
}
在上述通道中提到,「每函數參數一個分配代替遞歸調用,但在給定的例子中,我們沒有任何任務?
任何人都可以解釋並舉例說明如何將遞歸轉換爲迭代函數的上述解釋?
我認爲他們的表達不準確,他們的真正含義是你可以每個循環做一次操作,而不是每次函數調用一次。在這種情況下,輸出語句('out <<') – mydogisbox