lgpipilu 发表于 2007-4-6 11:05

求助 3N 1 问题

3N+1 问题就是任给自然数N,如果N是偶数,则将N除2;如果N是奇数,则将N乘3加1。重复上述过程得到一个无穷数列。
例 N=5
   16    8    4   2   1       4      2   1   .....................
求助如何编写程序~~~~~
我写好久没有写出来~~~
请各位大师帮助
谢谢了

eight 发表于 2007-4-6 11:44

原帖由 lgpipilu 于 2007-4-6 11:05 发表
3N+1 问题就是任给自然数N,如果N是偶数,则将N除2;如果N是奇数,则将N乘3加1。重复上述过程得到一个无穷数列。
例 N=5
   16    8    4   2   1       4      2   1   .....................
求助 ...


建议以后把问题写清楚,至少应该写为:

          = f(n)/2 , f(n) 是偶数
f(n+1)
          = 3*f(n) +1 ,f(n) 是奇数

[ 本帖最后由 eight 于 2007-4-6 13:28 编辑 ]

eight 发表于 2007-4-6 13:34

N = 10;
y = zeros(1,N);
y(1) = 5;
for i = 2:N
    if mod(y(i-1),2) == 0
      y(i) = y(i-1)/2;
    else
      y(i) = 3 * y(i-1) + 1;
    end
end
y=y(2:end)

lgpipilu 发表于 2007-4-6 14:21

谢谢~~~~
:victory:

qinjian111 发表于 2008-11-9 13:13

:lol http://forum.vibunion.com/forum/member.php?action=activate&uid=110374&id=zOZOYK


N = 10;
y = zeros(1,N);
y(1) = 5;
for i = 2:N
    if mod(y(i-1),2) == 0
      y(i) = y(i-1)/2;
    else
      y(i) = 3 * y(i-1) + 1;
    end
    if y(i)==1 break;
    end
end
y=y(2:i)
页: [1]
查看完整版本: 求助 3N 1 问题