我有一个家庭作业,要求一个函数使用直接递归来查找数组中最左边、最低、负整数的索引。附加要求是函数的参数是数组和大小,并且没有有效值的返回值为 -999。
我想出了这个:
int LowIndexMinNeg(int src[], int size)
{
if (size == 0)
return -999;
int index = LowIndexMinNeg(src, size - 1);
if (index >= 0)
return (src[size - 1] < src[index]) ? (size - 1) : index;
else
return (src[size - 1] < 0) ? (size - 1) : index;
}
它有效,满足要求,并得到了我的充分肯定。这可以用尾递归来实现吗?
在我看来,由于您必须从递归调用中获取结果以用于比较,以决定是否将其传递或更新它,这是不可能的,但递归仍然将我的大脑联系在一起,所以可能有一些明显的东西我错过了。
注意:我的家庭作业已经上交并评分。