一个值得初学者一看的 小程序(鄙人受益匪浅)
写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+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=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
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=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}
----------------解决方案--------------------------------------------------------
N年前的东西了,不懂算法的结果
----------------解决方案--------------------------------------------------------
LZ,我也给你类似一题吧?
----------------解决方案--------------------------------------------------------
我感觉初学者,养成一个好的写代码风格是很重要的.
比如,代码的排版也是非常重要的.
----------------解决方案--------------------------------------------------------
如果说有人用了后面的方法,那只能说明没好好看题,蛮干。
----------------解决方案--------------------------------------------------------
用后面一个方法是应为题目要求用循环语句...
----------------解决方案--------------------------------------------------------
LZ的程序是比较麻烦``其实有规律的啊``
结果和N在第几个是有关系的``
比如当N是第奇数个数时``结果的值是1.2.3.4开始慢满增加.
是第偶数个数的时候``结果是-1,-2,-3,-4
LZ下来在观察一一下``自己推导出个公式不就可以了吗``
----------------解决方案--------------------------------------------------------
k=-1;
for(i=1;i<=n;i++)
{s=s+i;
i=i*-k;}
----------------解决方案--------------------------------------------------------
飞燕 ,你给我发下 这类的试题吧!
----------------解决方案--------------------------------------------------------
http://yzfy.org/bbs/viewthread.php?tid=741
http://yzfy.org/bbs/viewthread.php?tid=740
先给这两题
[color=white]
----------------解决方案--------------------------------------------------------