C语言二十三弹---求第N项斐波那契数列的值

C语言求第N项斐波那契数列的值

定义:斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89…自然中的斐波那契数列,这个数列从第3项开始,每一项都等于前两项之和。

思路:从定义中可知 斐波那契数列是每一项等于前两项之和,需要注意的就是 数列的第1、2项为1。

方法一:递归法

注意:使用递归要记住设置开始条件,并使得随着递归的深入逐渐靠近结束条件(其实就是开始条件)。
#define _CRT_SECURE_NO_WARNINGS
#include 

int Fib(int n)
{
	if (n < 3)
	{
		return 1;
	}
	else
	{
		return Fib(n - 1) + Fib(n - 2);
	}
}

int main()
{
	int n = 0;
	scanf("%d", &n);
		int ret = Fib(n);
		printf("%d\n", ret);
	return 0;
}

方法二:非递归法

思路:使用变量接收前两项之和 再使用前两项分别接收 前两项之和和第二项的值。主要 1 2 项为1。

#define _CRT_SECURE_NO_WARNINGS
#include 

int Fib(int n)
{
	int tmp = 0;
	int a = 1;
	int b = 1;

	if (n < 3)
	{
		return 1;
	}

	while (n > 2)
	{
		tmp = a + b;
		a = b;//必须a先接收b 不然会导致b中值被覆盖
		b = tmp;
		n--;
	}

	return tmp;

}


int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d\n", ret);
	return  0;
}

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