两个函数互相调用 - C / C ++

时间:2014-04-17 19:59:21

标签: c++ c function

我正在编写一个程序,用于编写由钚和铅制成的所有安全链给定长度。如果没有彼此相邻的2个钚,链是安全的。这是我教科书的解决方案:

所有以铅结尾的安全链长度n都是通过将铅添加到所有安全链n-1,其中以铅为首,所有安全链长n-1以钚结尾。

以钚结尾的所有安全链n都是通过将钚添加到以铅结尾的所有安全链n-1来制作的。

我用C ++编写代码,但它不起作用,因为我有两个相互调用的函数,所以当我编译程序编译时说:

error: 'Plutonium' was not declared in this scope

这是我的代码:

void Lead(int k)
{
    if(k == 1)
    {
        x[1] = 'O';
        write();
    } else
    {
        x[k] = 'O';
        Lead(k-1);
        Plutonium(k-1);
    }
}

void Plutonium(int k)
{
    if(k == 1)
    {
        x[k] = 'P';
        write();
    } else
    {
        x[k] = 'P';
        Lead(k-1);
    }
}

我尝试在函数void Plutonium();的声明中编写void Lead();,但它没有用。

有没有办法解决这个或不同的解决方案,而不会解决这个问题?

5 个答案:

答案 0 :(得分:2)

这将有效:

void Plutonium(int k);

void Lead(int k)
{
    if(k == 1)
    {
        x[1] = 'O';
        write();
    } else
    {
        x[k] = 'O';
        Lead(k-1);
        Plutonium(k-1);
    }
}

void Plutonium(int k)
{
    if(k == 1)
    {
        x[k] = 'P';
        write();
    } else
    {
        x[k] = 'P';
        Lead(k-1);
    }
}

答案 1 :(得分:1)

您是否在文件顶部编写了函数原型?

void Lead(int k);
void Pultonium(int k);

答案 2 :(得分:1)

您需要在使用之前声明一个函数,以便编译器知道函数的外观。只需在void Plutonium(int k);功能之前的某处添加Lead

答案 3 :(得分:1)

您需要功能原型

void Lead (int k);
void Plutonium (int k);

/**
 * All of your code goes down here
 */

答案 4 :(得分:1)

您需要使用"转发声明"在你的代码之上:

void Lead (int k);
void Plutonium (int k);