那么嘿,
我有一个学校的任务,它是基于以下代码的:
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就可以了
任何高质量的信息,它将如何正常工作,我无法完全弄清楚?
答案 0 :(得分:2)
您感兴趣的是Collatz_conjecture及其变体。 假设它永远不会达到无穷远,但是我们仍然没有证据。
我也强烈建议观看以下有关它的小型视频:Collatz_conjecture,variations。
答案 1 :(得分:0)
n%2表示余数。因此,偶数等于0,不等于0。
当n不等于偶数时,它将转到else。 所以当你写:
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
您也可以调试代码以查看会发生什么,其他示例也可以考虑一下:-)