请c语言高手给我讲解一下这个题我在学习c语言的时候,遇到了Fib
我在学习的时候,遇到了Fibonacci数列编写程序,主要就是这个,我知道题这个数列是怎么回事,但是他编译的我有点看不懂,希望知道的朋友给详细的解释一下 main() { long int f1,f2; int i; f1=1;f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld ",f1,f2); if(i%2==0)printf("\n"); f1=f1+f2; f2=f2+f1; } } 还有一个问题,就是用一维数组的知识编译的这个程我在学习
先看第一个 main() //主认识吧 { // 这个也可以不解释了吧 long int f1,f2; //定义2个长整形的东西 int i; //定义一个i,拿来做循环用。 f1=1;f2=1; //初始化这2个值 for(i=1;i<=20;i++) //FOR循环开始,现在i是1,每次循环后,i要加1 一直加到20,也就是说循环20次。 { printf("%12ld %12ld ",f1,f2);//输出2个值,就是刚才定义的2个1 if(i%2==0)printf("\n");//当i为双数的时候换行,第一次i是1,就不换了。 f1=f1+f2; //把f1和f2的值给f1,也就是说现在f1是1+1=“2”了。 f2=f2+f1; //把f2和f1的值给f2,注意现在f2是1,而f1已经是“2”了,所以 现在f2+f1=1+2=“3”。 } } 所以第1次循环后,现在就输出1 1 2 3。 然后就是第2次循环,因为这时候i是2,是双数,所以要换行。以此类推。 main() { int i; static int f[20]={1,1}; for(i=2;i<20;i++) f[i]=f[i-2]+f[i-1]; //这个是把前面2个值的和给第3个值。 for(i=0;i<20;i++) { if(i%5==0)printf("\n");//i为5的时候换一行,也就是每输出5个数字换一行 printf("%12d",f[i]);//一个一个把值给我输出来 } }