嘿,
我有一个学校的任务,它基于这个代码:
while(n != 1)
{
System.out.print(n + ", ");
if(n%2 == 0)
{
n = n/2;
}
else
{
n = here;
}
}
问题是,如果你改变这一行将会发生什么
n = here;
到3n + 2,2n + 1和n + 1到目前为止我学到了:对于3n + 2,如果你运行程序,n将是50而另一次是200,在某一点之后它看起来完全相同,虽然不起作用负数;对于2n + 1将无法正常工作,因为n + 1将起作用
任何质量好的信息,它将如何正常工作,我无法完全理解它?
你感兴趣的是Collatz_conjecture和变化。它应该永远不会无限,但我们仍然没有证据。
此外,我强烈建议观看这些关于它的小视频:Collatz_conjecture,variations。
n%2表示余数。因此,对于偶数,这等于0并且不均匀。
当n进入不均匀时,它会转到其他地方。所以当你写:
n = n + 1. with following example:
n=7, n != 1 so in the while, n%2 == 0 equals false, we go to else
n = n + 1, // now n =8
go back to top of while, n != 1 so in the while, n%2 == 0 equals true
n = n/2 //now n = 4
go back to top of while...
n = n/2 // now n = 2
go back to top of while...
n =n/2 // now n = 1
exit while
您还可以调试代码以查看发生的情况,您可以自己考虑的其他示例:-)