问题描述
我需要通过添加一个参数来使这个尾部递归,但我不确定要采取的第一步。
int countVal (int A[],int size,int val)
{
if (size == 0)
return 0;
else if (A[size - 1] == val)
return 1 + countVal(A,size-1,val);
else
return countVal(A,size - 1,val);
}
解决方法
添加的参数应该累加结果,当递归终止时返回累加结果而不是基值。
在这种情况下,您可以将基值作为默认参数值:
int countVal (int A[],int size,int val,int accumulator = 0)
{
if (size == 0)
return accumulator;
else if (A[size - 1] == val)
return countVal(A,size - 1,val,accumulator + 1);
else
return countVal(A,accumulator);
}
但使用单独(和隐藏)的辅助函数也很常见。