c语言递归法斐波那契数列求第n项

斐波那契数列是什么

斐波那契数列是指第一第二项的值为1,从第三项开始,后一项的值为前两项值的和。

  下面这个数列即为斐波那契数列:
 1,1,2,3,5,8,13,21,34,55......

第一种方法

int Fib(int n)
{
	int a = 1, b = 1;//a,b为第一项和第二项
	int c = 1;//c为第三项
//定义c为1 是因为 函数返回值为c 如果所求第n项小于3时,结果为1 直接返回c 不用重新定义
	while(n > 2)//小于2时  不用进入循环 因为前两项都是1
	{
		c = a + b;
		a = b;
		b = c;
		n--;//给循环定条件 防止进入死循环
	}
	return c;
}



int main()
{
	int n = 0;
	scanf("%d", &n);//n为要求的斐波那契数列第n项
	int ret = Fib(n);//Fib()为定义的斐波那契函数
	printf("%d", ret);
		return 0;
}

输入8 结果为21
c语言递归法斐波那契数列求第n项_第1张图片

第二种方法

int Fib(int n)
{
	if (n <= 2)//以第三项为分界 
		return 1;
	else
		return Fib(n - 1) + Fib(n - 2);//返回前两项的和
}


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

当输入9 输出 34

c语言递归法斐波那契数列求第n项_第2张图片

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