回 帖 发 新 帖 刷新版面

主题:递增牛群问题!

f=f1+f3;
        f3=f2;
        f2=f1;
        f1=f;
这段代码想不明白,既然f=f1+f3
那么还要f2=f1干什么?f的公式里的都不含f2!是否错了?我在这论坛的老贴里找到的!

回复列表 (共17个回复)

11 楼

噢,原来是我粗心看少了f3=f2,呵呵!谢谢拉

12 楼

i=1; 
while (i<=year)
    {
        if(i<4)
            f=f1=f2=f3=1;
        else
        {
        f=f1+f3;
        f3=f2;
        f2=f1;
        f1=f;
        i++;
        }
        printf("i=%2d n=%3d\n",i,f);
    }
    getch();
    return 0;
}
我这样写行不?可以的话和原来的区别在哪?

13 楼

不行
这样的话当year>4的时候进入死循环
i++应该放在if外面

14 楼

噢,又是不小心放错地方了!
i=1; 
while (i<=year)
    {
        if(i<4)
            f=f1=f2=f3=1;
        else
        {
        f=f1+f3;
        f3=f2;
        f2=f1;
        f1=f;
        }
        printf("i=%2d n=%3d\n",i,f);
        i++;
     }
    getch();
    return 0;
}
这样行了没?

15 楼

基本上可以了

16 楼

找本高中数学书看看,注意看里面的“数列”部分。

大部分的程序核心都可以表示成数列。

如果学了大学数学的矩阵的话,所有程序都可以由矩阵运算来表示。

17 楼


  f1      f2      f3      f    f
三年前 两年前 去年   今年
        三年前 两年前 去年

         f=f1+f3;
    f1=f2;原先的两年前变成了三年前,
    f2=f3;原先的去年变成了两年前
    f3=f; 原先的今年变成了去年

    main()
  {int i,year,f,f1,f2,f3;
   printf("请输入年份:");
   scanf("%d",&year);
  for(i=1;i<=year;i++)
   { if(i<4)
       f=f1=f2=f3=1;
    else
      { f=f1+f3;
    f1=f2;
    f2=f3;
    f3=f;
      }
        printf("第%d年有%d头牛.\n",i,f);
      }
   }

我来回复

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