反復関数と再帰関数に問題があります。反復関数があり、それを再帰関数に変換する必要があります。私のコードについてアドバイスをいただけますか? どうもありがとう
コードは、再帰を使用して、データ ポイントの配列が凹関数に対応するかどうかを判断することです。
反復バージョンのコードは次のとおりです。
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);
}