按每行输出4个数,输出斐波那契数列1,1,2,3,5,8,13 ...,输出前40位数
完美的几何学者,以斐波那契数列分割战场!
关于斐波那契数列,它的规律是非常显而易见的,无非就是从第三项开始,每一项都是前两项之和,接下来我将用同一个大方向,不同的两种理解方式来解决这道题.
1.借用for循环,三个变量解决
在写代码之前,老样子先用文字叙述一遍便于同学们的理解,思路如下:f1=1,f2=1,第三项等于前两项之和即 f1+f2, 在后面的运算中,第四项为第二项和第三项的和,即1+2,以及后面第五项为第三项和第四项的和,即2+3,,所以我们干脆拿 f1, f2 来存储变量,比如说:计算第三项时 f1=f1+f2 (2=1+1),计算第四项时,我们接着拿 f2 来存储,那第四项的值就可以表示为 f2=f2+f1;(注意:这两个式子前后顺序不能调换)依次类推,后面的数值都可以如此表示;
我们来看一下NS流程图:
思路应该比较清晰了吧,我们接着看代码:
#include
void main()
{
int i,f1,f2;
f1=1;
f2=1;
for(i=1;i<=20;i++)
{
printf("%12d%12d",f1,f2);
f1=f1+f2;
f2=f2+f1;
if(i%2==0)
printf("\n");
}
}
2.借用for循环,四个变量解决
这种方法做法上跟第一种差别不大,但是做题方向,思路是不同的,希望萌新们能更好的理解并运用for循环吧,思路如下:我们先引入三个变量,f1, f2, f3, 而 f3 用来存储前两项之和,即 f3=f1+f2, 每一次运算后,将 f1, f2, f3 的值打印出来,再将后面新的变量存储到之前的变量中去,即每运算后,将f2的值存储到f1中,将f3的值存储到f2中,再用f3来存储新的值,比如说:f1=1 , f2=1, f3=f1+f2 即 (2=1+1),然后打印出三个数的值后,将f2的值存储到 f1,将 f3 的值存储到f2,f3 用来存储第四项的值,即第四项可以表达为:f3=f2+f1 (3=2+1) ,如此,后续运算皆可这样表示。
我们先来看NS流程图:
捋一捋思路,接着看代码:
#include
void main()
{
int i,f1,f2,f3;
f1=1;
f2=1;
printf("%12d%12d",f1,f2);
for(i=3;i<=40;i++)
{
f3=f1+f2;
printf("%12d",f3);
if(i%4==0)
printf("\n");
f1=f2;
f2=f3;
}
}
以上两种解题思路对小白比较友好,没有什么深度,for循环的两种解题方向,第一种的优点呢,无非就是少用了一个变量,其实差别不大。
同学们学废了吗?欢迎留言 欢迎私聊 !
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)