主题:递增牛群问题!
			
 圣域无敌
				 [专家分:60]  发布于 2007-02-11 10:51:00							
			f=f1+f3;
        f3=f2;
        f2=f1;
        f1=f;
这段代码想不明白,既然f=f1+f3
那么还要f2=f1干什么?f的公式里的都不含f2!是否错了?我在这论坛的老贴里找到的!
						
					 
		
			
回复列表 (共17个回复)
		
								
				沙发
				
					
hzlajx [专家分:1310]  发布于 2007-02-11 11:02:00				
				f=f1+f3;
f3=f2;//记录为新的f3
f2=f1;//记录为新的f2
f1=f;//记录为新的f1
f2其实就是一个中间变量,一个f1,f2之间的中间变量
							 
						
				板凳
				
					
hzlajx [专家分:1310]  发布于 2007-02-11 11:04:00				
				所以没有问题,呵呵,如果没有中间变量那么f3,f1的值怎么保存啊,好好想想是不是,啊,加油,慢慢.
							 
						
				3 楼
				
					
雪光风剑 [专家分:27190]  发布于 2007-02-11 11:09:00				
				光有这点东西不足以说明问题
楼上解释也未必合理
把完整问题和程序贴出来再帮你具体分析
							 
						
				4 楼
				
					
圣域无敌 [专家分:60]  发布于 2007-02-11 11:18:00				
				/*递增的牛群*/
#include <stdio.h>
int main(void)
{
    int i,year,f,f1,f2,f3;
    printf("Enter year:");
    scanf("%d",&year);
    for(i=1;i<=year;i++)
    {
        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);
    }
    getch();
    return 0;
}
							 
						
				5 楼
				
					
雪光风剑 [专家分:27190]  发布于 2007-02-11 11:29:00				
				哦
那个广义fibonacci问题
晕死
貌似这个实现思路还是我自己提出来的……
关键问题在于
每过一年
当年的量等于相对于今年的第一年和第三年的数量和
然后今年过完,
f3=f2  原先的两年前变成了三年前,
f2=f1 原先的去年变成了两年前
f1=f 原先的今年变成了去年
明白了吗?
							 
						
				6 楼
				
					
圣域无敌 [专家分:60]  发布于 2007-02-11 11:43:00				
				既然f=f1+f3
那么还要f2=f1干什么?如果程序里没有f2=f1对程序的执行结果应该没什么影响吧!
							 
						
				7 楼
				
					
雪光风剑 [专家分:27190]  发布于 2007-02-11 11:50:00				
				有影响
如果你去了那句
你执行5和6还有7
跟你不去那句作对比
看看有什么不同
提示:用注释的方法可以暂时删除语句
							 
						
				8 楼
				
					
圣域无敌 [专家分:60]  发布于 2007-02-11 11:56:00				
				有影响,为什么会产生这样的影响,我光看程序看不出来啊!
							 
						
				9 楼
				
					
雪光风剑 [专家分:27190]  发布于 2007-02-11 11:56:00				
				或者在这里解释也不难
你第4年的结果是正确的
1 1 1 2
到了第5年
1 1 1 2 3应该无碍
第六年还是一样
1 1 1 2 3 4
第7年,没了f2=f1会打出5
因为你根本f3就不可能是1以外的值
							 
						
				10 楼
				
					
雪光风剑 [专家分:27190]  发布于 2007-02-11 12:01:00				
				[quote]
然后今年过完,
f3=f2  原先的两年前变成了三年前,
f2=f1 原先的去年变成了两年前
f1=f 原先的今年变成了去年
[/quote]
这段不知道你看懂没有
如果去年的数值没有变成两年前的数值
那么f2始终=1
于是f3始终=1
							 
									
			
我来回复