【发布时间】:2011-03-05 11:12:55
【问题描述】:
问题
我想知道这是否是实现可变深度递归的可行方法,以便我可以在每一步运行一个函数以及描述问题的任何更好/其他解决方案。
描述
假设我希望有一个函数以模式填充数组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
}
}
编辑:删除了之前提到的不正确的返回类型。脑残。
【问题讨论】:
-
这不是一个无限循环,因为 recurse_n 总是会在到达 0 之前被调用
-
@PowerRoy:不,这不是无限循环。如果 n 为 0 或更小,则不会递归。如果 n 大于 0,就会有递归,但是对于每次递归,n 会更小,所以它总是会达到 0 的基本情况。
-
不,这不是一个无限循环,因为在调用 recurse_n 之前 n 会递减,所以最终它会以 0 的参数被调用。追溯调用堆栈,它们将各自结束,因为一旦 recurse_n返回它会将 n 设置为 0 并跳出循环。
-
您是在寻求帮助以定义创建序列 x、y、x、y、x、y 等的算法,还是在询问如何设置递归函数?
-
这不是递归的好用法,IMO。好像有点矫枉过正。你最好只使用某种循环......
标签: c++ algorithm function recursion