目录
在C语言中,分别用递归和非递归两种方法实现求第n个斐波那契数
首先分析一下关于斐波那契数列的原理:
第一个和第二个数都是1,之后的每个数都是前两个数之和,即:
1,1,2,3,5,8,……
用到了循环相关的知识,
当n>2的时候进入循环,将前两个数相加得到第三个数;
当n<=2的时候跳出循环。
观察斐波那契数列可以得到一个公式:

根据这个公式就能进行递归。当n>2的时候进行递归,当n = 1或n = 2时返回1。
为了方便大家的交流和学习,我将程序源代码和运行截图放置在下方。
非递归:
- #include
- //递归和非递归分别实现求第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;
- }

递归:
- //递归
- 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;
- }

以上就是今天要讲的内容,本文简单的介绍了用C语言如何求解第n个斐波那契数的两种思路,还进一步展示了代码的运行结果验证了作者的思路。
本文的作者也只是一个正在学习C语言等编程知识的萌新,若这篇文章中有哪些不正确的内容,请在评论区向作者指出(也可以私信作者),欢迎大佬们指点,也欢迎其他正在学习C语言的萌新和作者进行交流。
最后,如果本篇文章对你有所启发的话,也希望可以支持支持作者,后续作者也会定期更新学习记录。谢谢大家!