C语言 实现斐波那契( Fibonacci )数列

斐波那契数列是由数列前两项之和决定第三项,并以此类推,逐步迭代的二阶递推数列。

解决方案一:循环
输入位数n,输出前n项的数列

#include
int main()
{
     
	int a,b,c,d=1,f1=1,f2=0;
	printf("请输入项数n:");
	scanf("%d",&a);
	for(;d<=a;d++)
	{
     
		b=f1+f2;
		f1=f2;
		f2=b;
		printf("%d",b);
	}
	return 0;
}

对循环体算法的理解:

开始的条件为 f1 f2 b 三个参数,其中 f1 f2 有值存储,b为空;故判断出结束循环体时也应为此形式,且同样为 小 中 大的顺序,存储于 的值无价值。
退出循环时, f1 应为 f2f2 应为 f1+f2 根据需要回推算法,发现不能直接替换,否则会互相掣肘,没有一个式子在先进行的情况下不会影响到另外一个,故而调出了 f3 作为中间的缓存区,此时便解决了问题。

解决方法二:函数的迭代

求斐波那契数列的第n个数

#include
int fun(int x)
{
     
 if(x==1||x==2)
  return 1;
 else if(x==0)return 0;
 x=fun(x-1)+fun(x-2);
 return x;
}
int main()
{
     
 int n;
 scanf("%d",&n);
 printf("%d",fun(n));
 return 0;
}

补充:子函数中用switch亦可。

你可能感兴趣的:(C语言,c语言,算法)