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

 更新时间:2022年11月10日 11:23:37   作者:轻轻敲醒沉睡的心灵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个斐波那契数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言数据结构递归之斐波那契数列

    C语言数据结构递归之斐波那契数列

    这篇文章主要介绍了C语言数据结构递归之斐波那契数列的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • OpenCV实现平均背景法

    OpenCV实现平均背景法

    这篇文章主要为大家详细介绍了OpenCV实现平均背景法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • c++静态局部变量和静态函数示例

    c++静态局部变量和静态函数示例

    这篇文章主要介绍了c++静态局部变量和静态函数示例,需要的朋友可以参考下
    2014-04-04
  • C语言共用体union作用使用示例教程

    C语言共用体union作用使用示例教程

    这篇文章主要为大家介绍了C语言共用体union作用的使用示例教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-02-02
  • C语言代码实现推箱子小游戏

    C语言代码实现推箱子小游戏

    这篇文章主要为大家详细介绍了C语言代码实现推箱子小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C++ cin速度优化详解

    C++ cin速度优化详解

    这篇文章主要介绍了C++ cin速度优化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C语言实现链队列基本操作

    C语言实现链队列基本操作

    这篇文章主要为大家详细介绍了C语言实现链队列基本操作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C语言实现三子棋游戏(棋盘可变)

    C语言实现三子棋游戏(棋盘可变)

    这篇文章主要为大家详细介绍了C语言实现三子棋游戏,棋盘可变,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • c++智能指针unique_ptr的使用

    c++智能指针unique_ptr的使用

    本文主要介绍了c++智能指针unique_ptr的使用,与shared_ptr作用类似,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • C语言数据结构实现链表去重的实例

    C语言数据结构实现链表去重的实例

    这篇文章主要介绍了C语言数据结构实现链表去重的实例的相关资料,这里提供了题目及实例代码,需要的朋友可以参考下
    2017-07-07

最新评论