【牛客刷题-算法】3-第一篇-斐波拉契数列-C实现

简介: 【牛客刷题-算法】3-第一篇-斐波拉契数列-C实现

问题描述


image.png


原题链接:斐波拉契数列


解题思路

观察一下fib(x)的表达式,比较容易发现,这道题非常适合使用函数的递归来解。因为它的表达式本身也是一个递归的形式。


如果对斐波拉契数列还不熟悉,可以试着将一些项列出来:1,1,2,3,5,8,13,21,34,55,89······


刚开始接触递归的时候,可能会莫名德就感觉它非常的难以理解,但其实没关系,多做一些题,自己多用几次,自然慢慢得就熟了。


算法过程:

对函数fib(n)传入的一个x:

1)判断n是否为 1 或 2 ,若是,则直接返回 1

2)若不是,则进入递归,先计算第 n 项的前两项(第 n-1 和第 n-2 项),然后将它们的和作为值返回


在第二步中计算前两项时,又是一个1)、2)两步的过程,这就构成了递归


核心代码实现:

注:这里只是核心代码的实现,作为一个完成主要算法任务的函数,并不是完整的可运行代码。在main函数中调用此函数,即可完成相应的算法任务。


int Fibonacci(int n ) {
    // write code here
    if(n == 1 || n == 2)
        return 1;
    return Fibonacci(n - 1) + Fibonacci(n - 2);
}

小结


这个算法的实现还是非常简单的,当我们遇到一些更复杂的递归任务时,其实可以反过来参考一下曾经的简单程序,也许能够让自己的思路变得更加清晰。


结束语:

今天的分享就到这里啦,快来加入刷题大军叭!

相关文章
|
7月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
3月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
25 0
|
5月前
|
算法 Go Python
[算法]计算斐波拉契数列
[算法]计算斐波拉契数列
|
5月前
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
|
5月前
|
存储 算法 Java
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
51 0
|
5月前
|
算法 Python
【Leetcode刷题Python】改进的算法,高效求一个数的因子
一个高效的Python函数用于找出一个整数的所有因子,通过仅遍历到该数平方根的范围来优化性能。
53 0
|
7月前
|
算法
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
【数据结构与算法 刷题系列】求带环链表的入环节点(图文详解)
|
7月前
|
算法
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
|
7月前
|
算法
【数据结构与算法 刷题系列】移除链表元素
【数据结构与算法 刷题系列】移除链表元素
|
7月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】环形链表的约瑟夫问题
【数据结构与算法 刷题系列】环形链表的约瑟夫问题

热门文章

最新文章