论递归的复杂度怎么算
  • 板块学术版
  • 楼主Kalium
  • 当前回复5
  • 已保存回复5
  • 发布时间2020/11/22 10:30
  • 上次更新2023/11/5 07:32:53
查看原帖
论递归的复杂度怎么算
328170
Kalium楼主2020/11/22 10:30

类似以这个代码

#include <iostream>

using namespace std;

const int N = 1e6 + 7;

int n;

int a[N];

int sum[N << 2];

void build(int depth, int l, int r) {
	if (l == r) {
		sum[depth] = a[l];
		return ;
	}
	int mid = (l + r) >> 1;
	build(depth << 1, l, mid);//遍历左儿子 
	build(depth << 1 | 1, mid + 1, r);//遍历右儿子 
	sum[depth] = sum[depth << 1] + sum[depth << 1 | 1];//递归返回每层的值 
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i ++)
		cin >> a[i];
	build(1, 1, n);//层数,左右区间的端点 
	return 0;
}

他的复杂度多少

2020/11/22 10:30
加载中...