c ++多个递归函数

时间:2017-02-28 14:44:48

标签: c++ function recursion forward-declaration

如何在声明函数之前使用函数?

我有3个函数,每个函数都必须相互交互,但我找不到一种方法来使早期声明的函数与后来声明的函数进行交互。这是代码:

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);
}

1 个答案:

答案 0 :(得分: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);
}