编写一个C-++程序来应用一个递归函数来计算一维数组中所有数字的频率。
时间: 2023-07-16 13:17:34 浏览: 55
以下是一个C++程序,用递归函数计算一维数组中所有数字的频率:
```c++
#include <iostream>
using namespace std;
void frequency(int arr[], int n, int freq[])
{
if(n == 0)
return;
freq[arr[n-1]]++;
frequency(arr, n-1, freq);
}
int main()
{
int arr[] = {1, 2, 3, 2, 1, 4, 5, 4, 6, 7};
int n = sizeof(arr)/sizeof(arr[0]);
int freq[n];
for(int i=0; i<n; i++)
freq[i] = 0;
frequency(arr, n, freq);
for(int i=0; i<n; i++)
cout << i << " occurs " << freq[i] << " times." << endl;
return 0;
}
```
在这个程序中,我们定义了一个名为`frequency`的递归函数,它接受一个整数数组`arr`,数组的大小`n`和一个频率数组`freq`。该函数使用递归的方式,从`n`开始递减,将每个数字的出现次数存储在`freq`数组中。在函数的基本情况下,当`n`等于0时,函数停止递归。
在主函数中,我们定义了一个包含数字的整数数组。我们还定义了一个大小为`n`的频率数组,并将其初始化为零。然后,我们调用`frequency`函数,它计算了每个数字的出现频率。最后,我们打印每个数字及其出现次数。