C 具有递归函数的中国环
我想听听你对我的解决方案的意见 我必须实现一个递归函数来实现中国戒指游戏。这个游戏包括戴上n个戒指,这些戒指一开始是不戴的。这些环使用表格(大小=n)表示。最初,所有表格单元格=0,最终状态-->所有表格单元格=1。练习建议使用如下定义的“中文”函数编写递归解决方案:C 具有递归函数的中国环,c,recursion,C,Recursion,我想听听你对我的解决方案的意见 我必须实现一个递归函数来实现中国戒指游戏。这个游戏包括戴上n个戒指,这些戒指一开始是不戴的。这些环使用表格(大小=n)表示。最初,所有表格单元格=0,最终状态-->所有表格单元格=1。练习建议使用如下定义的“中文”函数编写递归解决方案: chinese (t, k, b) { if (b) replace(t,k) else remove(t,k) } 已知“replace”和“remove”函数是相互递归的。“repl
chinese (t, k, b)
{
if (b)
replace(t,k)
else
remove(t,k)
}
已知“replace”和“remove”函数是相互递归的。“replace”将打开(t[i]=1)1..k中的所有单元格,“remove”将关闭(t[i]=0)中的所有单元格。因此,我建议的解决办法如下:
void main ()
{
int b=1;
chinese (t, n, 1);
}
对于该功能,请更换并拆下:
void replace(int n)
{
if (n > 0) // Do nothing for 0 or fewer rings.
{
replace(n-1);
remove(n-2);
printf("put on ring %d",n);
replace(n-2);
}
}
void remove(int n)
{
if (n > 0) // Do nothing for 0 or fewer rings.
{
remove(n-2);
printf("Take off ring %d",n);
replace(n-2);
remove(n-1);
}
}
那么你觉得我提出的解决方案怎么样?非常感谢马上在main做几件事
int main(void)
{
int b=1; // b is never used
chinese (t, n, 1); // undefinef t and n
}
有多少论点?你一开始有两个;1之后。@pmg表(t)和它的大小(n)假设您的代码按您希望的方式工作,这将更适合。您的中国戒指游戏是这样的吗?你戴上n个戒指是什么意思?关于:
voidmain()
(除了在flakyvisualstudio中)这不会编译。main()
只有两个有效签名:intmain(void)
和intmain(intargc,char*argv[])
注意它们都有一个返回类型int
,而不是void
intmain(void){intb=1;int*t;intn;chinese(t,n,b);}可以吗?