回 帖 发 新 帖 刷新版面

主题:大家快来帮帮忙!!~~~~

题目:编写一程序,验证角谷猜想。所谓的角谷猜想是:"对于任意大于1的自然数n,若n为奇数,则将n变为3*n+1,否则将n变为n的一半。经过若干次这样的变换,一定会使n变为1。"


我写的程序

program xj;
var
n:integer;
begin
readln(n);
repeat
if n mod 2=0 then n:=0.5*n
else n:=3*n+1;
until n:=1;
end.



错在哪里了?我不知道,谢谢

回复列表 (共6个回复)

沙发

program xj;
  var
    n:integer;
  begin
    readln(n);
    repeat
      if n mod 2=0
        then n:=0.5*n{类型赋值不相容}
        else n:=3*n+1;{这个;可以不要}
    until n:=1;{多了:,这个;也是多余的}
  end.

板凳

楼上的,帮忙帮到底好吗?照你的意思,运行后,在n mod 2=0的等号处显示operand types do not match operator,谢谢啦,我初学

3 楼

因为N 定义的是整型
所以只能整除
改为:  n:=n div 2

4 楼

最关键的错误,解决了这个问题就行了.
then n:=0.5*n{类型赋值不相容}
n为integer,2.5*n为real,这样就不相容了.
现在明白了吧................

5 楼

如果N=3 的话
N:=3*N;永远也不会变成1

6 楼

楼上的:当n=3时:n依次变化为:3、10、5、16、8、4、2、1

我来回复

您尚未登录,请登录后再回复。点此登录或注册