用C++编写一个程序:用递归函数求三个数中最大数和最小数的差值
时间: 2024-10-07 15:06:41 浏览: 46
在C++中,你可以通过递归函数来解决这个问题,首先找到数组的第一个元素作为当前的最小值,然后递归地检查剩下的两个元素,如果发现更小或更大的值,则更新当前的最小值或最大值。最后返回两者之间的差值。以下是简单的代码示例:
```cpp
#include <iostream>
using namespace std;
int findMinMaxDiff(int arr[], int n, bool isMin) {
// Base case: 当只剩下一个元素时,直接返回0 (因为只有一个元素,差值为0)
if (n == 1) {
return 0;
}
// 如果isMin为true,表示正在寻找最小值,其他情况寻找最大值
if (!isMin) {
arr[n - 1] = -arr[n - 1]; // 反转负号以模拟查找最大值
}
// 递归比较第一个和第二个元素,然后传入剩余部分继续查找
int diff = abs(arr[0] - arr[1]); // 计算差值
int newMinMaxDiff = findMinMaxDiff(arr + 2, n - 1, !isMin); // 更新结果
// 恢复原始数组状态,如果是找最小值,还原负号;否则不需要操作
if (isMin) {
arr[n - 1] = -arr[n - 1];
}
return max(diff, newMinMaxDiff); // 返回较大者
}
int main() {
int numbers[] = {5, 8, 3, 10, 6};
int n = sizeof(numbers) / sizeof(numbers[0]);
cout << "Difference between the minimum and maximum number: "
<< findMinMaxDiff(numbers, n, true) << endl; // 调用函数并传入true开始找最小值
return 0;
}
```
这个程序会计算给定数组 `numbers` 中三个连续元素的最大差值。如果你想找出整个数组的最大差值,只需稍作修改即可。
阅读全文