[英]Recursive c++ function
我正在尝试创建如下的递归函数。
该函数需要一个计数器k
,并且只要计数器大于零,我就希望递归调用它,以便最终我得到如下所示的结果:
result = 2(2(2n+1)+1)+1
其中最后一个n(当k = 0时)应为零。
int pass(int k, int n)
{
if(k==0)
{
n = 0;
}
else
{
k--;
return pass(k, 2*n+1);
}
}
有人可以给我提示如何做吗?
更改
n = 0;
至
return n;
返回结果。
其余代码很好
当前,代码的行为是不确定的,因为您没有在所有控制路径上显式返回值。
您的代码可以简化为:
int pass(int k, int n)
{
return k ? 2 * pass(k - 1, n) + 1 : 1;
}
在这里,我使用了三元条件运算符 。 如果k
非零,则返回2 * pass(k - 1, n) + 1
,否则返回1。
在这种情况下,请注意不要溢出您的int
。 请注意,一个int
的最大大小可以小到32767。请考虑改用long
类型。
另外,请注意,递归通常不是解决O(n)类型问题的好方法; 由于超出了函数调用堆栈的限制,因此在运行时可能会出错:请考虑折叠为循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.