C语言的美学:斐波那契,你会吗?

C语言的美学:斐波那契,你会吗?,第1张

       按每行输出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循环的两种解题方向,第一种的优点呢,无非就是少用了一个变量,其实差别不大。

        同学们学废了吗?欢迎留言  欢迎私聊 !

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存