哈哈,考考你:你能说出这6行代码的结果吗? 当然, if/else结构根本不影响 printf("Hello world!\n"); 如果: if(n是奇数) n=3*n+1; else n=n/2; printf("Hello world!\n"); 均在循环体内 ( ?{} ) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有可能死循环或运行出错退出,不输出hello world *******************while(n>1) if(n是奇数) n=3*n+1; else n=n/2;*******************上面的效果是:1.如果n是奇数,则他下一步会变成偶数;接下来执行2;如果n是偶数也执行2。 2.一直循环下去直到n变为1。如n=16则8,4,2,1 3.跳出循环。执行循环体下面语句printf("Hello world!\n");所以一定可以hello world 当然3*n不能超出int大小。否则出错。 if n==2,可以打印;if n>2,n的值不断变大,while一直循环到n溢出,然后就不得而知了。出这种题有什么意思? 我以为N为奇数时不输出的,偶数时输出“Hello world";不知道我说的对不对 我没有考虑出完整的结果,但是我认为:如果输入是:2^n,可以输出结果。如果输入z,3*z+1 == 2^n也可视输出结果,但是不知道,是不是所有的数都可以归到这个值上?大家继续讨论!UP 第一感觉是3*n+1或者是3*n+2,最次是3*n+?时会有数使之不出hello world,具体还要算一算。 对不起,我想我没有说清楚,我是想探讨停机问题,如果因为括号的原因给你着成视觉上的麻烦,我也服你了。while(n>1){ if(n是奇数) { n=3*n+1; } else { n=n/2; }}printf("Hello world!\n");请不必考虑整数n是否会溢出,这个程序仅在自然界运行,不在计算机上运行。自然界整数是无穷大的。现在只问:这个程序时候可以肯定输出Hello World。当然一开始n>1,且是整数。 或者说,结论是:这个程序到目前为止还没有人能证明出他可以永远显示Hello World,(但到目前为止所有尝试的int都可以显示Hello World)。谁能证明这个结论呢? Top 同意: 回复人: inside1() ( ) 信誉:100 2002-3-25 16:27:58 得分:0 if n==2,可以打印;if n>2,n的值不断变大,while一直循环到n溢出,然后就不得而知了。 计算机中好像是 3*n+2时输入0x7fffffff死循环。 n=3*n+1 后n定为偶数,所以下次循环进入 n=n/2n=n/2 后n有可能还是偶数,所以整个循环中n为偶数的几率大故该循环最后可以退出 看来我走错了地方。拜拜。怎么VC版的连最基本的算法知识都看不上?CString::Find()用爽了吗? 另外,如果是 signed int, long, short 等,溢出一定有机会变负数那就退出了循环 你画两条曲线看看啊,只要n>2,就会死机了。哎,可惜我不是科班出身,逻辑证明方面的基础一点没有... 这和VC有关系么?CSDN有没有数学版? iProgram(我不是机器人) ,我想你的意思是这是一道纯数学题,跟计算机没关系n=2成立n=3成立if(n=2k)成立(即最终能被2整除)不妨把它看作2^m,忽略中间步骤。n=2k+1=>n=6k+4=>n=3k+2=>n=2k+(k+2)既然2k能被最终被2整除,那么k也一定能最终被2整除(这一点很容易得到),那么上面最后一个式子是不是可以看作n=3?也就是说上式可以最终被2整除,于是得证。时间关系,随便写写,欢迎批评指正。 归根结蒂 是证明 n = n*3 + 1的跌迨过程对任何整数 n都会产生 一个数,该数是 2 的 m 次方 错误:哪有“if(n是奇数)这种代码的 这是什么消息? VirtualAlloc开辟内存,用memcpy_s内存拷贝数据,总是LPVOID“未知大小” 类中,如何传递接收指针 百分求解 我想问一个关于CSting转换成LPSTR 和CreateProcess匹配的问题 请软件开发高手加盟项目开发,5000元/20天,可兼职 两台分别在两个局域网之内的机器的通信问题,很奇怪为什么连不上 高分请教:关于HOOK的问题 GetWindowLong的具体含义 TH文字游戏编辑器1.0版本 CListView如何禁止刷新一段时间? 如何改变应用程序的图标 求用vc设计小软件的idea
while(n>1)
if(n是奇数)
n=3*n+1;
else
n=n/2;*******************
上面的效果是:1.如果n是奇数,则他下一步会变成偶数;接下来执行2;如果n是偶数也执行2。
2.一直循环下去直到n变为1。如n=16则8,4,2,1
3.跳出循环。执行循环体下面语句printf("Hello world!\n");
所以一定可以hello world
否则出错。
if n>2,n的值不断变大,while一直循环到n溢出,然后就不得而知了。出这种题有什么意思?
如果输入是:2^n,可以输出结果。
如果输入z,3*z+1 == 2^n也可视输出结果,但是不知道,是不是所有的数都可以归到这个值上?大家继续讨论!UP
while(n>1)
{
if(n是奇数)
{
n=3*n+1;
}
else
{
n=n/2;
}
}
printf("Hello world!\n");
请不必考虑整数n是否会溢出,这个程序仅在自然界运行,不在计算机上运行。自然界整数是无穷大的。现在只问:这个程序时候可以肯定输出Hello World。当然一开始n>1,且是整数。
同意:
回复人: inside1() ( ) 信誉:100 2002-3-25 16:27:58 得分:0
if n==2,可以打印;
if n>2,n的值不断变大,while一直循环到n溢出,然后就不得而知了。
n=n/2 后n有可能还是偶数,
所以整个循环中n为偶数的几率大
故该循环最后可以退出
看来我走错了地方。拜拜。怎么VC版的连最基本的算法知识都看不上?CString::Find()用爽了吗?
那就退出了循环
n=3成立
if(n=2k)成立(即最终能被2整除)不妨把它看作2^m,忽略中间步骤。
n=2k+1
=>n=6k+4
=>n=3k+2
=>n=2k+(k+2)
既然2k能被最终被2整除,那么k也一定能最终被2整除(这一点很容易得到),那么上面最后一个式子是不是可以看作n=3?也就是说上式可以最终被2整除,于是得证。时间关系,随便写写,欢迎批评指正。
都会产生 一个数,该数是 2 的 m 次方