2017-02-28 143 views
2

如何在聲明之前使用函數?我有3個函數,它們中的每一個都必須相互交互,但我找不到一種方法來使先前聲明的函數與稍後聲明的函數進行交互。下面的代碼:C++多重遞歸函數

int f(int a){ 
    if (a==0){return 1;} 
    if (a==1){return 2;} 
    if (a==2){return 7;} 
    return 2*f(a-1)+3*f(a-2)+3*f(a-3)+6*g(a-2)+2*g(a-3)+2*h(a-2); 
} 

int g(int b){ 
    if (b==0){return 0;} 
    if (b==1){return 1;} 
    return f(b-1)+g(b-1)+h(b-1); 
} 

int h(int c){ 
    if (c==0){return 0;} 
    if (c==1){return 1;} 
    return f(c-2)+g(c-1)+g(c-2); 
} 
+4

您要查找的內容稱爲「前向聲明」。您可以在Google中找到更多信息。 –

+0

使用前向聲明,在此聲明函數而不填寫其正文。 –

+0

您的評論不應該是答案嗎? – zett42

回答

5

一個功能只需要知道另一個函數的名字,它的參數類型和返回類型,以便能夠調用它。在你調用它的地方不需要完全實現。只需聲明您的功能第一個和實施他們以後。

// Declare before use 
int g(int b); 
int h(int c); 

// Implement here 
int f(int a){ 
    if (a==0){return 1;} 
    if (a==1){return 2;} 
    if (a==2){return 7;} 
    return 2*f(a-1)+3*f(a-2)+3*f(a-3)+6*g(a-2)+2*g(a-3)+2*h(a-2); 
} 

int g(int b){ 
    if (b==0){return 0;} 
    if (b==1){return 1;} 
    return f(b-1)+g(b-1)+h(b-1); 
} 

int h(int c){ 
    if (c==0){return 0;} 
    if (c==1){return 1;} 
    return f(c-2)+g(c-1)+g(c-2); 
}