如何解决我试图通过添加一个参数来使这段代码尾递归,但我不是 100% 确定如何实现 1 + recusrive 调用部分
我需要通过添加一个参数来使这个尾部递归,但我不确定要采取的第一步。
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);
}
但使用单独(和隐藏)的辅助函数也很常见。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。