寻找C语言高手··救命··

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:22:52
编程题!!

long func(int N)

1+(1+2)+(1+2+3)+(1+2+3+4+……+n)

输入n;用调用函数输出结果!!

long func(int N)
{
int i,j;
long sum=0; /* sum为总和 */
for(i=1;i<=N;i++) /* i从1开始 */
{
for(j=1;j<=i;j++)
{
sum=sum+j;
}
}
return sum;
}

j从1开始到i结束,由于i从1递增到N,故每次sum都会与(1+2+3+.....+i)相加,则实现了1+(1+2)+(1+2+3)+(1+2+3+4+……+n)

alshland,你的单重循环出了点错误,不是每次循环的时候sum都可以乘以2的。只有第一次循环可以。

long func(int N)
{
if(n=1)
return 1;
else
return n+func(n-1);
}

long func(int n)
{
long sum=0,i;
for(i=0;i<=n;i++)
{
sum*=2;
sum+=i;
}
return sum;
}
用了单重循环,效率为O(n)

#include<stdlib.h>
#include<stdio.h>

int func(int n)
{
int b=0,t=0,i,j;
for(i=1;i<=n;i++)
{
b=b+i;
t+=b;
}
return t;
}

int main()
{
int n,total;

printf