1-2+3-4+5-6+7......+n的几种实现
发布日期:2021-05-10 15:54:06 浏览次数:16 分类:精选文章

本文共 3156 字,大约阅读时间需要 10 分钟。

������������������

������������������������������������������������������������������������������������������1-2+3-4+5-6+7+...+n���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������

���������������������������������������������������������������

long fn(long n) {
long temp = 0;
int i, flag = 1;
if (n <= 0) {
printf("error: n must > 0");
exit(1);
}
for (i = 1; i <= n; i++) {
temp += flag * i;
flag *= -1;
}
return temp;
}

������������������������������������������������������1������n���������������������������������������������������������������������������������������������������������������������n������������������������������������������

������������������������������

���������������������������������������������������������������������������������������������������������������������������������������

long fn(long n) {
long temp = 0;
int j = 1, i = 1, flag = 1;
if (n <= 0) {
printf("error: n must > 0");
exit(1);
}
while (j <= n) {
temp += i;
i = -i;
i > 0 ? i++ : i--;
j++;
}
return temp;
}

������������������������������������������������������������������������������������������������������������������������������������������������������������������������

������������������������������������

������������������������������������������������������������������������������������������

long fn(long n) {
if (n <= 0) {
printf("error: n must > 0");
exit(1);
}
if (n % 2 == 0) {
return (n > 1) ? (-1) : 0;
} else {
return (n > 1) ? (-1) : 0;
}
}

������������������������������������������������������������������������������������������O(n)���������O(1)������������������������������������������������������������������������

������������������������������������������

���������������������������������������������������������������������������������������������������������������flag���������0������������fn1(n)=n/2!+n/3!+n/4!+���+n/6!������flag���������1������������fn2(n)=n/5!+n/6!+n/7!+���+n/9!���

���������������������������������������������

float fn(int n, int flag) {
if (n <= 0) {
return 0;
}
float t[2][5] = {1.0/2, 1.0/3, 1.0/4, 1.0/5, 1.0/6,
1.0/5, 1.0/6, 1.0/7, 1.0/8, 1.0/9};
float result = 0;
for (int i = 0; i < 6; i++) {
result += n / t[flag][i];
}
return result;
}

������������������������������������������������������������������������������������������������������������������������

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������

上一篇:Oracle闪回查询总结
下一篇:alter system flush shared_pool;

发表评论

最新留言

不错!
[***.144.177.141]2025年04月09日 22时21分18秒