2011-12-30 53 views
0

我想知道是否有可能在遞歸中傳遞前一個調用函數的參數。如何在遞歸中傳遞前一個參數

我可以使用return來成功嗎?

例如在新的遞歸我棒保持以前的字符串。

+0

你能舉個例子說明你想要達到的目標嗎? – 2011-12-30 15:21:58

+0

你需要發表一些代表你的意思的實際東西。 – Lion 2011-12-30 15:22:29

+2

你是什麼意思?你能給個例子嗎?遞歸通常要求你傳遞前一個函數的參數。 – 2011-12-30 15:22:30

回答

1
void recursive(int* data) 
{ 
    //TODO: do something useful, for now just increment by one; 
    *data+=1; 

    if (*data>99) 
    { 
    return; 
    } 
    else 
    { 
    recursive(data); 
    } 
} 
+2

該函數將**從不**返回,並且會陷入無限循環,因爲函數中沒有任何**破壞**條件。 – Lion 2011-12-30 16:09:20

2

雖然是從你的問題未清除的,可以同時使用遞歸功能明顯傳遞從以前的調用函數參數(S)。

From wikipedia arcticles

遞歸是在自相似的方式重複項的過程。對於 實例,當兩個鏡子的表面與 彼此完全平行時,出現的嵌套圖像是遞歸的無限形式。該術語具有各種各樣的涵義,從語言學到邏輯學各種各樣的專業。遞歸最常見的應用是數學和計算機科學,其中涉及定義函數的方法,其中定義的函數被應用在其自己的定義中。 具體而言,這使用有限表達式來定義無限數量的實例(函數 值),對於某些實例,該有限表達式可以將 引用到其他實例,但是以這樣的方式不會發生引用的循環或無限鏈條 。該術語還更一般地用於描述以自相似的方式重複對象的過程。

例子

•河內

的塔•編寫鏈表向後

•遞歸插入

•8皇后

•認識簡單的語言

•前綴表達式

•轉換前綴後綴


該遞歸計算一個數的階乘簡單的例子。

unsigned int factorial(unsigned int n) 
{ 
    if (n <= 1) 
     return 1; 
    else 
     return n * factorial(n-1); 
} 

函數遞歸調用自己的輸入的較小版本(N - 1)和用n乘以遞歸調用的結果,直至達到基體的情況下,類似的階乘的數學定義。

在使用遞歸函數時,您總是需要通過在函數中強加一些機制(如if條件)來明確地中斷該函數,否則調用將永遠不會返回。