永发信息网

C语言问题,大神速来啊!

答案:4  悬赏:10  手机版
解决时间 2021-02-13 09:33
  • 提问者网友:伴风望海
  • 2021-02-13 01:12
C语言问题,大神速来啊!
最佳答案
  • 五星知识达人网友:轻熟杀无赦
  • 2021-02-13 02:15
n ==2时是死循环。
while(n!=1){ // n==2 所以可以进入while
if(n%2==0){ // 2%2 == 0

n/=2; // n ==1
m++;
}
if(n%2!=0){ //1%2 ==1 !=0

n=(3*n+1)/2; //n = (3X1+1)/2 ==2
m++;
}

永远不会变1
全部回答
  • 1楼网友:摆渡翁
  • 2021-02-13 04:25

  • 2楼网友:执傲
  • 2021-02-13 03:44
你输入是多少?
  • 3楼网友:洎扰庸人
  • 2021-02-13 02:26
n=(3*n+1)/2=(2n+n+1)/2=n+(n+1)/2
显然每次新的n值一定要比旧的n值大,越来越大。
假设这个语句的数值处理逻辑正确,那就是
if(n%2==0){...}与下一句的逻辑处理错误:两条if语句先后执行。
if(n%2!=0){...}
应该改为
if(n%2==0){...}
else{...}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯