声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1396|回复: 4

[编程技巧] 求助 3N 1 问题

[复制链接]
发表于 2007-4-6 11:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

使用道具 举报

发表于 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 编辑 ]
发表于 2007-4-6 13:34 | 显示全部楼层
  1. N = 10;
  2. y = zeros(1,N);
  3. y(1) = 5;
  4. for i = 2:N
  5.     if mod(y(i-1),2) == 0
  6.         y(i) = y(i-1)/2;
  7.     else
  8.         y(i) = 3 * y(i-1) + 1;
  9.     end
  10. end
  11. y=y(2:end)
复制代码

评分

1

查看全部评分

 楼主| 发表于 2007-4-6 14:21 | 显示全部楼层
谢谢~~~~
:victory:
发表于 2008-11-9 13:13 | 显示全部楼层
:lol http://forum.vibunion.com/forum/ ... 10374&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)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 00:45 , Processed in 0.064313 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表