【发布时间】:2014-12-27 13:01:09
【问题描述】:
回溯和递归有什么区别?这个程序是如何工作的?
void generate_all(int n)
{
if(n<1) printf("%s\n", ar);
else{
ar[n-1]='0'; //fix (n)th bit as '0'
generate_all(n-1); //generate all combinations for other n-1 positions.
ar[n-1]='1'; //fix (n)th bit as '1'
generate_all(n-1); //generate all combinations for other n-1 positions.
}
}
【问题讨论】:
-
我想你最好把你的问题说清楚一点。
ar甚至没有在您提供的代码中定义。 -
好问题!正如您所展示的那样,递归用作完整枚举所有可能结果的实现机制;而不是仅仅在基本情况下打印,添加一个测试,一个测试通过时的条件打印,以及可选的纾困,你已经得到了一个针对特定问题的迷你 Prolog。
标签: recursion data-structures backtracking