当然, if/else结构根本不影响 printf("Hello world!\n"); 如果:
    if(n是奇数)
         n=3*n+1;
    else
         n=n/2;
    printf("Hello world!\n");  均在循环体内  ( ?{} )

解决方案 »

  1.   

    有可能死循环或运行出错退出,不输出hello world
      

  2.   

    *******************
    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.   

    当然3*n不能超出int大小。
    否则出错。
      

  4.   

    if n==2,可以打印;
    if n>2,n的值不断变大,while一直循环到n溢出,然后就不得而知了。出这种题有什么意思?
      

  5.   

    我以为N为奇数时不输出的,偶数时输出“Hello world";不知道我说的对不对
      

  6.   

    我没有考虑出完整的结果,但是我认为:
    如果输入是:2^n,可以输出结果。
    如果输入z,3*z+1 == 2^n也可视输出结果,但是不知道,是不是所有的数都可以归到这个值上?大家继续讨论!UP
      

  7.   

    第一感觉是3*n+1或者是3*n+2,最次是3*n+?时会有数使之不出hello world,具体还要算一算。
      

  8.   

    对不起,我想我没有说清楚,我是想探讨停机问题,如果因为括号的原因给你着成视觉上的麻烦,我也服你了。
    while(n>1)
    {
        if(n是奇数)
        {
             n=3*n+1;
        }
        else
        {
             n=n/2;
        }
    }
    printf("Hello world!\n");
    请不必考虑整数n是否会溢出,这个程序仅在自然界运行,不在计算机上运行。自然界整数是无穷大的。现在只问:这个程序时候可以肯定输出Hello World。当然一开始n>1,且是整数。
      

  9.   

    或者说,结论是:这个程序到目前为止还没有人能证明出他可以永远显示Hello World,(但到目前为止所有尝试的int都可以显示Hello World)。谁能证明这个结论呢?
      

  10.   

    Top 
     
    同意:
     
    回复人: inside1() (  ) 信誉:100  2002-3-25 16:27:58  得分:0  
     
     
    if n==2,可以打印;
    if n>2,n的值不断变大,while一直循环到n溢出,然后就不得而知了。 
     
     
      

  11.   

    计算机中好像是 3*n+2时输入0x7fffffff死循环。
     
      

  12.   

    n=3*n+1 后n定为偶数,所以下次循环进入 n=n/2
    n=n/2 后n有可能还是偶数,
    所以整个循环中n为偶数的几率大
    故该循环最后可以退出
      

  13.   


    看来我走错了地方。拜拜。怎么VC版的连最基本的算法知识都看不上?CString::Find()用爽了吗?
      

  14.   

    另外,如果是 signed int, long, short 等,溢出一定有机会变负数
    那就退出了循环
      

  15.   

    你画两条曲线看看啊,只要n>2,就会死机了。哎,可惜我不是科班出身,逻辑证明方面的基础一点没有...
      

  16.   

    这和VC有关系么?CSDN有没有数学版?
      

  17.   

    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整除,于是得证。时间关系,随便写写,欢迎批评指正。
      

  18.   

    归根结蒂 是证明 n = n*3 + 1的跌迨过程对任何整数 n
    都会产生 一个数,该数是 2 的 m 次方
      

  19.   

    错误:哪有“if(n是奇数)这种代码的