Python/java/C++ 找出列表中最大的数字(官方解法)
#pythondef max_(lst):if len(lst) == 0:return Noneif len(lst) == 1:return lst[0]else:sub_max = max_(lst[1:])return lst[0] if lst[0] > sub_max else sub_max//javaimport java.util.Arrays;public class R
·
#python
def max_(lst):
if len(lst) == 0:
return None
if len(lst) == 1:
return lst[0]
else:
sub_max = max_(lst[1:])
return lst[0] if lst[0] > sub_max else sub_max
//java
import java.util.Arrays;
public class RecursiveMax {
private static int max(int[] list) {
if (list.length == 2) {
return list[0] > list[1] ? list[0] : list[1];
}
int subMax = max(Arrays.copyOfRange(list, 1, list.length));
return list[0] > subMax ? list[0] : subMax;
}
public static void main(String[] args) {
System.out.println(max(new int[]{1, 5, 10, 25, 16, 1})); // 25
}
}
//C++
#include <iostream>
#include <vector>
#include <stdexcept>
using std::cout;
using std::endl;
template <typename T>
T max(std::vector<T> arr) {
if (arr.empty()) throw std::invalid_argument("Cannot select max value from empty sequence");
if (arr.size() == 1) return arr.at(0);
T back = arr.back();
arr.pop_back();
T sub_max = max(arr);
return back > sub_max ? back : sub_max;
}
int main() {
std::vector<int> array = {1, 5, 10, 25, 16, 1};
cout << max(array) << endl;
std::vector<int> negative_array = {-1, -5, -10, -25, -16};
cout << max(negative_array) << endl;
}
更多推荐
已为社区贡献2条内容
所有评论(0)