问题
我想知道这是否是实现可变深度递归的可行方法,这样我就可以在每个步骤以及描述问题的任何其他更好/其他解决方案中运行一个函数。
说明
假设我希望有一个函数可以用模式填充数组x,y,x,y,x,y
其中x和y是某些算法定义的变量
和x,y,z,x,y,z
,其中x,y和z是由同一算法定义的变量。
对于所有数量的变量,此操作应继续进行。这是实现它的可行方法吗?
void recurse_n(int n)
{
while(n > 0)
{
--n;
recurse_n(n);
n = 0;
// Use algorithm here
}
}
编辑:删除了以前引用的不正确的返回类型。 Brainfart。
最佳答案
因此,根据您的评论,您想了解设置递归函数的最佳方法。您所做的工作会奏效,但是令人费解,有些困惑。我要做的是简化它:
void recurse_n(int n) {
if (n <= 0) {
// Break-out condition
return;
}
--n;
recurse_n(n);
// Your algorithm stuff here.
}
这样可以更轻松地了解发生了什么。我要补充的一件事是,您可能希望在调用recurse_n之前先做算法工作,但这一切都取决于您算法的工作。
如果以我写的方式考虑,它将递归直到n小于或等于0,然后再执行任何算法工作。可能是您想先执行算法然后递归。