我最近一直在研究“数据抽象和用 C++ 解决问题”一书,但是我确实在某个时候卡住了。
我在递归章节中,遇到了一个问题,即“在数组中查找最大值”。如你所知,我必须用递归视角解决这个问题,实际上我已经用这个算法解决了这个问题;
基本上,从数组的第一项到最后一项开始,算法将每个值相互比较,并且在数组的最大项中独立于数组中(这是调用基本情况)
int largestValue(int anArray[], int first , int last){
int value;
// base case
if(first == last){
value = anArray[first];
}
else if(anArray[first]>anArray[first+1]){
anArray[first + 1] = anArray[first];
value = largestValue(anArray, first + 1, last);
}else{ // anArray[first] < anArray[first + 1]
value = largestValue(anArray, first + 1, last);
}
return value;
但是,在我阅读了问题的描述之后,有人说“你必须用多路径递归来解决这个问题。” 为了更好地理解我把问题的截图:
而且我想不出具有“多路径递归”视角的算法。