【问题标题】:Two functions calling each other - C/C++相互调用的两个函数 - C/C++
【发布时间】:2014-04-17 19:59:21
【问题描述】:

我正在编写一个程序,该程序可以编写所有由钚和铅制成的安全链,并保持一定的长度。如果没有相邻的 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 Lead(); 的声明中写void Plutonium();,但没有成功。

是否有解决此问题的方法或不会导致此问题的其他解决方案?

【问题讨论】:

  • 只是添加一个函数声明?
  • 使用前向声明

标签: c++ c function


【解决方案1】:

这将起作用:

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

【讨论】:

  • 哦,我写了,但括号中没有int k
  • 非常感谢马特。它确实为我解决了大问题
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      你需要函数原型

      void Lead (int k);
      void Plutonium (int k);
      
      /**
       * All of your code goes down here
       */
      

      【讨论】:

        【解决方案5】:

        您需要在代码顶部使用“前向声明”:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-09
          • 1970-01-01
          相关资源
          最近更新 更多