C++程序 使用递归打印数组
使用递归编写C++程序以打印数组
1. 使用静态变量
静态变量具有保留其值的属性,即使它们超出范围也是如此!因此,在其先前范围中静态变量保留其先前值,并且在新范围中不会重新初始化。
语法:
static data_type var_name = var_value;
// C++程序以递归方式打印数组
#include <bits/stdc++.h>
using namespace std;
// 递归函数以打印数组
void print_array(int arr[], int size)
{
// 使用静态变量
static int i;
// 基本情况
if (i == size) {
i = 0;
cout << endl;
return;
}
// 打印第i个元素
cout << arr[i] << " ";
i++;
// 递归调用
print_array(arr, size);
}
// 驱动程序代码
int main()
{
int arr[] = { 3, 5, 6, 8, 1 };
int n = sizeof(arr) / sizeof(arr[0]);
print_array(arr, n);
return 0;
}
输出:
3 5 6 8 1
2. 不使用静态变量
// C++程序以递归方式打印数组
#include <bits/stdc++.h>
using namespace std;
// 递归函数以打印数组
void print_array(int arr[], int size, int i)
{
// 基本情况
if (i == size) {
cout << endl;
return;
}
// 打印第i个元素
cout << arr[i] << " ";
i++;
// 递归调用
print_array(arr, size, i);
}
// 驱动程序代码
int main()
{
int arr[] = { 3, 5, 6, 8, 1 };
int n = sizeof(arr) / sizeof(arr[0]);
print_array(arr, n, 0);
return 0;
}
输出:
3 5 6 8 1
时间复杂度: O(n)
辅助空间: O(1),如果我们将递归调用堆栈视为辅助空间,则为O(n)