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
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{...}
显然每次新的n值一定要比旧的n值大,越来越大。
假设这个语句的数值处理逻辑正确,那就是
if(n%2==0){...}与下一句的逻辑处理错误:两条if语句先后执行。
if(n%2!=0){...}
应该改为
if(n%2==0){...}
else{...}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯