设计递归函数 求数组int arr[]={1,2,3,4,5}所有元素的和
时间: 2023-09-04 15:11:39 浏览: 46
可以使用递归函数来求解数组所有元素的和,具体实现如下:
```python
def sum_array(arr, index):
if index == 0: # 边界条件,当索引为 0 时直接返回数组第一个元素
return arr[0]
else:
return arr[index] + sum_array(arr, index-1) # 递归调用 sum_array 函数,并将数组索引减 1
arr = [1, 2, 3, 4, 5]
print(sum_array(arr, len(arr)-1)) # 输出结果为 15
```
在上述代码中,我们定义了一个名为 `sum_array` 的递归函数,该函数接收两个参数,分别是要求和的数组和当前处理的元素索引。
首先,我们判断当前处理的元素索引是否为 0,如果是,则直接返回数组的第一个元素。如果不是,则将当前元素的值与索引减 1 时的结果递归相加,最终得到数组所有元素的和。
最后,我们通过调用 `sum_array` 函数并传入数组和最后一个元素的索引来计算数组所有元素的和,并将其输出到屏幕上。
相关问题
用递归法求数组的最大值.函数接口定义:int amax
(int *arr, int n),其中arr为整型数组,n为数组长度。下面是递归实现的代码:
```c++
int amax(int *arr, int n) {
if (n == 1) {
return arr[0];
}
int max = amax(arr, n - 1);
if (max > arr[n - 1]) {
return max;
} else {
return arr[n - 1];
}
}
```
首先,当数组长度为1时,直接返回数组中唯一的元素。
否则,先递归求出前n-1个元素的最大值,然后将这个最大值与第n个元素进行比较,返回更大的那个。
注意,这里用到了三目运算符,可以简化代码。
用递归法求数组中最小元素
以下是使用递归法求一维数组中最小元素的C++程序:
```cpp
#include <iostream>
using namespace std;
int findMin(int arr[], int start, int end) {
if (start == end)
return arr[start];
int mid = (start + end) / 2;
int leftMin = findMin(arr, start, mid);
int rightMin = findMin(arr, mid + 1, end);
return min(leftMin, rightMin);
}
int main() {
int arr[] = {5, 3, 8, 1, 9};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "The minimum element in the array is: " << findMin(arr, 0, n-1);
return 0;
}
```
在这个程序中,`findMin`函数使用递归来计算最小元素值。它接收一个数组、一个起始索引和一个结束索引作为参数。当起始索引和结束索引相等时,函数返回数组中唯一的元素值。否则,函数使用二分法将数组划分为两部分,并递归计算左半部分和右半部分的最小值。最后,函数返回左半部分和右半部分的最小值中的较小值。
在`main`函数中,我们声明了一个整型数组,并使用sizeof运算符计算数组长度。然后,我们调用`findMin`函数来计算最小元素值,并将其打印到控制台上。