我在3n + 1猜想中观看了一段视频,只是想试试看能否创建一个简单的程序来复制它的几个周期。试图结合For和If循环
我想要做的是让程序获取输入数字,决定它是奇数还是偶数。如果将它除以2,然后使用该数字继续循环。或者,如果该值为奇数,则乘以3并加1,然后继续循环。
即,如果数字是7,那么它是奇数,所以去22,即使如此去到11,这是奇数,所以去34,甚至到17,等等。
这是我的尝试,我只是想尝试它的乐趣,并没有得到任何好处。我希望这只是一个小小的代码,如果没有,我可以离开它。
#Want to do 10 loops of n
#If n is even /2
#if n is odd n*3 +1
n = input("enter first value for n")
for i = (n:10);
disp(i)
if mod(i, 2) == 0
% i is even
ans = sprintf("%d", i ," is even")
newn = (i/2)
disp(ans)
else
% i is odd
ans = sprintf("%d", i ," is odd")
disp(ans)
newn = (3*n +1)
end
end
编辑:
我曾与代码回答所以这里的问题是更新的代码我有帮助,那似乎运作良好。我不知道为什么sprintf工作得不好。
n = input("enter first value for n")
for i = 1:10
if mod(n, 2) == 0
% n is even
n = n/2
else
% n is odd
n = 3*n +1
end
end
什么是你的问题? – excaza
你在'i'和'n'之间混合,并且没有'newn'的用法 – EBH