这个while循环会停止吗?

时间:2015-04-11 15:39:32

标签: c++

这个while循环是否会停止?

while n > 1
  if n mod 2 = 0 then
    n:=n/2
  else
    n:=3*n+3

1 个答案:

答案 0 :(得分:1)

这是等效的代码。

while ( n > 1 )
{
   if ( n % 2 == 0 )         // if n is even
      n = n / 2 ;
   else                      // if n is odd
      n = ( 3 * n ) + 3 ;
}

关于你的问题"会不会停止" ,这取决于n的价值。

如果n是奇数或奇数的倍数(1未包括),则它将是无限循环。但如果它是偶数而不是奇数的倍数,那么它将不是无限循环。

例如,如果输入8,则不会是无限循环。

但是,如果您输入903的倍数)之类的数字,那么它将是一个无限循环。