我最近一直在学习“数据抽象和使用 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;
Run Code Online (Sandbox Code Playgroud)
但是,在我阅读了问题的描述后,有人说“你必须用多路径递归来解决这个问题”。为了更好地理解我把问题的截图:

而且我无法从“多路径递归”的角度想出算法。