我对迭代函数和递归函数有疑问。我有一个迭代函数,我必须将其转换为递归函数。你能给我一些关于我的代码的建议吗?非常感谢
该代码用于确定数据点数组是否对应于使用递归的凹函数。
这是迭代版本的代码:
bool isConcave(double a[], int n)
{
int slope = 1;
bool concave = true;
for (int i = 1; i < n && concave; i++)
{
double delta = a[i] - a[i-1];
if (slope > 0)
{
if (delta < 0)
slope = -1;
}
else if (delta > 0)
concave = false; // slope == -1 and delta > 0
}
return concave;
}
而且,这是我无法工作的递归版本的代码:
bool isConcave_r(double a[], int n, int& slope)
{
//Implement this function using recursion
double delta = a[n] - a[n-1];
bool concave = true;
if (n == 0)
return false;
if (slope > 0)
{
if (delta < 0)
{
slope = -1;
}
else
concave = true;
}else
return 0;
//dummy return statement
return isConcave_r(a, n, slope);
}