我正在编写一个程序,用于编写由钚和铅制成的所有安全链给定长度。如果没有彼此相邻的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();
,但它没有用。
有没有办法解决这个或不同的解决方案,而不会解决这个问题?
答案 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);