#include stdio.h
创新互联建站始终坚持【策划先行,效果至上】的经营理念,通过多达10多年累计超上千家客户的网站建设总结了一套系统有效的全网营销推广解决方案,现已广泛运用于各行各业的客户,其中包括:楼梯护栏等企业,备受客户赞誉。
/*
* 等差数列求和公式Sn=n*a1+n(n-1)d/2或者Sn=n(a1+an)/2
*/
int main() {
int n;
int sum=0;
scanf("%d",n);
sum=n*2+n*(n-1)*3/2;
printf("%d",sum);
return 0;
#include stdio.h
int fun(int n)
{
if(n==0)
return 0;
return n%2?2*fun(n-1)+1:2*fun(n-1)-1;
}
int main()
{
int n;
scanf("%d",n);
printf("%d\n",fun(n));
return 0;
}
如果中间有相等 3,2,1,1,1,1, 0 ,这不算降序,算无序了!!!
我重新优化了一下,虽改了一点点,但效率提高了很多;
#include "stdio.h"
int order(int dat[ ],int n)
//升序就输出return 1,降序输出-1,乱序输出0
{
int t=dat[1]-dat[0];
int r=t0?1:(t0?-1:0);
if (r==0||n=2) // r==0 时,不管N多少,都不再递归下去,这大大优化了
return(r);
int r1=order(dat+1,n-1);
return (r1==r?r:0);
} // 这递归算法仅六行,够短的了 !!!!
main()
{
int dat[ ]={1,4,2,6};
printf("%d",order(dat,4));
}
我用C++BUILDER6试过了,我的递归是正确的
#includestdio.h
int fib(int a);
main()
{
int n;
scanf("%d",n);
fib(n);
}
int fib(int a)
{
int b[100];
int i;
b[0]=1;
b[1]=1;
for(i=2;i=a-1;i++)
b[i]=b[i-1]+b[i-2];
for(i=0;ia;i++) //b[a]没有被赋值,不能输出它的值
{
printf("%d\t",b[i]);
if((i%4)==3) //每四个换行,应该是取余为3的时候打印换行符
printf("\n"); //打印换行符应该在for循环里面
}
return b[a];
}