采用迭代和排列两种方式处理Fibonacci数列Fibonacci数列的特征。 第一、二个二数是一、一,从第三个数开始,是前面两个数之和。
斐波那契数列可以用以下数学形式表示:
f(1)=1当) n=1)时f )2)=1当) n=2)时. f ) n(=f(n-1 ) f ) n-2 )时) n=3)时1、1、2、3、5、8、13
方法一:迭代方式使用f1和f2两个迭代变量,利用循环处理在一个循环中传递数列后两个数。
程序代码#includestdio.hintmain(void ) {int f1,f2,I; f1=1; f2=1; for(I=1; i=20; I ) printf(d )、f1和f2; ///一个周期中两个if(I%2==0) printf ) (n ); //每输出4个换行符,f1=f1 f2; f2=f2 f1; }return 0; )注)递推往往表现为反复。 也就是说,像上面程序中的f1、f2变量一样,从变量的原始值中挤出新值,或者不断地用新值替换变量的原始值。
执行结果
方法二:排列方式为每个数组元代表斐波那契数列中的一个数,递归求解每个数,依次存入相应数组元。
程序代码#includestdio.hintmain(void ) {int i; intf [ 20 ]={ 1,1 }; //剩下的元素默认为0for(I=2; i 20; I ) f(I )=f(I-2 ) f ) I-1 ); //从前两个元素导出当前元素for (I=0; i 20; I () if ) I%4==0) printf ) (n ); printf(d )、f (I ); }printf((n ); 返回0; }运行结果
总结起来,两个程序都可以正确求出并输出结果,但第一种方式是依次求出各个数并输出后,就不能保存这些数据。 另一方面,数组处理将每个数保存在数组中,因此尝试单独输出第八个数很容易。 这是两种方式的最大区别。