if(n%2)n=(3*n+1)/2; 这一行里(n%2)n ,括号后面的n如何理解? 5

#include<stdio.h>intmain(){intn,cont=0;scanf("%d",&n);while(n>1){if(n%2)n=(3*n+1)/2;e... #include<stdio.h>

int main()
{
int n,cont=0;
scanf("%d",&n);
while(n>1){
if(n%2)n=(3*n+1)/2;
else n/=2;
cont++;
}
printf("%d\n",cont);

return 0;
}
展开
 我来答
百度网友de73cb2
2020-02-02 · TA获得超过5万个赞
知道答主
回答量:52
采纳率:100%
帮助的人:2.5万
展开全部

倒序相加

设Sn=1+2+3+........+(n-1)   (1)

倒过来一下

Sn=(n-1)+(n-2)+……+2+1    (2)

(1)+(2)得

2Sn=n(n-1)     (n个(n-1)相加)

所以Sn=n(n-1)/2

扩展资料:

如果一个 数列{an},与首末项等距的两项之和等于首末两项之和,可采用把正着写和与倒着写和的两个和式相加,就得到一个常数列的和,这一求和方法称为倒序相加法 (可用于求等差数列的性质公式------ Sn=n( a + a )/2 )

举例:求 数列:2 4 6……2n的前2n项和

解答:

2 4 6 …… 2n

2n 2(n-1) 2(n-2)…… 2

设前n项和为S,以上两式相加

2S=[2+(2n)]+[4+2(n-1)]+[6+2(n-2)]+……+[(2n)+2] 共n个2n+2

故:S=n(2n+2)/2=n(n+1)

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一剑出血
高粉答主

2020-02-01 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:2亿
展开全部
if(n%2)n=(3*n+1)/2;
相当于
if(n%2)
n=(3*n+1)/2;
意思就是说,如果n为奇数,则将其数值乘以1.5再加上0.5。
追问
if(n%2)的意义是什么啊,
为什么我把它改成 if(n%2==0),答案就不对了呢
追答
if (n%2)
等价于
if ((n%2)!=0)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式