【发布时间】:2021-11-11 00:48:36
【问题描述】:
我正在尝试使用递归查找向量中的最大值,但我不断遇到分段错误。我无法弄清楚这个问题。有谁知道为什么?
int find_max(vector<int> integer_array, int i) { //variable i just keeps track of the index starting at 0
if(i == integer_array.size()-1) {
return integer_array[i];
}
return max(integer_array[i], find_max(integer_array, i++));
}
//Example of a call: find_max(vector_array, 0);
更新:我知道它效率低下,但这只是为了练习递归......
【问题讨论】:
-
i++的值为i。将i++更改为i + 1。 -
使用递归 -- 向量中有多少项?如果有数千个项目,您就有可能使用递归来耗尽堆栈内存。而为什么要用这种非正统的方式(递归)来求最大值呢?使用递归是有正当理由的,比如树遍历,但是要在向量中找到最大项??
-
O(N^2) 存储复杂度 + O(N) 堆栈开销...这几乎就像您正在尝试找到效率最低的方法。