C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C语言求第n个斐波那契数

C语言新手练习题之求第n个斐波那契数

作者:轻轻敲醒沉睡的心灵d(ŐдŐ๑)

斐波那契数列这一个大一上C语言就有的问题大家应该都不陌生,下面这篇文章主要给大家介绍了关于C语言新手练习题之求第n个斐波那契数的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下

前言

在C语言中,分别用递归和非递归两种方法实现求第n个斐波那契数

一、思路

首先分析一下关于斐波那契数列的原理:

第一个和第二个数都是1,之后的每个数都是前两个数之和,即:

1,1,2,3,5,8,……

1.非递归

用到了循环相关的知识,

当n>2的时候进入循环,将前两个数相加得到第三个数;

当n<=2的时候跳出循环。

2.递归

观察斐波那契数列可以得到一个公式:

gif.latex?f%28n%29%3D%5Cleft%5C%7B%5Cbegin%7Bmatrix%7D%201%20%26%20n%20%3D%201%2C2%20%26%20%5C%5C%20f%28n-1%29%20&plus;%20f%28n-2%29%26n%3E2%20%26%20%5Cend%7Bmatrix%7D%5Cright.

根据这个公式就能进行递归。当n>2的时候进行递归,当n = 1或n = 2时返回1。

二、源代码以及运行截图

为了方便大家的交流和学习,我将程序源代码和运行截图放置在下方。

非递归:

源代码:

#include<stdio.h>
//递归和非递归分别实现求第n个斐波那契数
//非递归
int main()
{
	int i = 1;
	int j = 1;
	int temp = 0;
	int n = 0;
	int fib = 0;
	scanf("%d", &n);
	while (n > 0)
	{
		if (n > 2)
		{
			temp = j;
			j = i + j;
			i = temp;
		}
		else 
			fib = j;
		n--;
	}
	printf("%d", fib);
	return 0;
}

运行截图:

f1dbc3e8d9f744e48d6e0b4214054344.png

递归:

源代码:

//递归
int Fib(int n)
{
	if (n > 2)
	{
		return Fib(n - 1) + Fib(n - 2);
	}
	else 
	{
		return 1;
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	while (1)
	{
		if (n <= 0)
		{
			printf("输入错误请重新输入:>");
		}
		else
		{
			printf("%d\n", Fib(n));
			break;
		}
	}
	return 0;
}

运行截图:

f717f956eea348309b381ae30c07805b.png

总结

以上就是今天要讲的内容,本文简单的介绍了用C语言如何求解第n个斐波那契数的两种思路,还进一步展示了代码的运行结果验证了作者的思路。

到此这篇关于C语言新手练习题之求第n个斐波那契数的文章就介绍到这了,更多相关C语言求第n个斐波那契数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文