我知道递归并不是我在标题中描述的最佳方式,但这是一个练习。我想知道是否有任何方法可以在以下条件下递归地(在C中)找到数组中的最大值:
感谢您的回答!
答案 0 :(得分:3)
基本思想是认识到数组的最大值是第一个元素中的较大者,并且第一个元素被移除后的子阵列的最大值。
然后调用子数组上的max函数以获得该数组的最大值。 (我会让你编写剩下的代码。)
答案 1 :(得分:0)
接受回答后
对阵列的其余部分检查1个元素使用堆栈的N级。良好的递归避免了大量使用堆栈的算法。
相反,如果数组的长度为1,则返回该结果 否则,对阵列的每个 half 进行递归,并从2个半部分中选择最大值。
此方法使用order log2(N)堆栈空间。
两种算法最终都会调用递归函数N次,这只是堆栈有多深的问题。如果N = 1000,则迭代方法在堆栈上将具有大约1000个级别。采用分半法,约2 * log2(N)或20级。