首页
学习
活动
专区
圈层
工具
发布

《JavaSE-习题篇二》之七个题目,十六张图,让你不惧递归。

} return num%10+sum(num/10); } } ✔2.3.5求斐波那契数列的第 N 项 斐波那契数列介绍 斐波那契数列(Fibonacci sequence...、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用...斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列...在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。...循环求斐波纳契数列 我们定义三个变量,f1和f2分别标记斐波那契数数列的第一和第二项,f3先置为-1,用来记录F(n - 1)+F(n - 2)。

44310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    剑指Offer题解 - Day16

    斐波那契数列」 力扣题目链接[1] 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。...斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1....斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。...因为斐波那契数列直接计算的话,会产生很多重复的计算。导致运算时间指数级的增加,因此这里一定要避免使用暴力法。 换个角度思考,其实计算当前值的时候,只需要关心前面两个值。...分析: 首先找到动态规划方程,然后定义初始值。斐波那契的核心就是第三数为前两数之和。因此我们只需要额外维护三个变量,用来动态缓存计算的结果。 按照题目的要求,这里要对大数进行取模运算。

    27910

    go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包

    b := 0, 1 return func() int { a, b = b, a+b return a } } 单元测试用例函数,连续 10 次调用斐波那契数列生成器,输出斐波那契数列中的前十位数字...int { a, b = b, a+b return a } 此时再次运行 10 次斐波那契数列生成器函数,如我们所愿生成前 10 位斐波那契数列. // 1 1 2 3 5 8 13 21 34...} 斐波那契数列生成器函数 fibonacci 的返回值是匿名函数,而匿名函数的返回值就是斐波那契数字....如果不考虑函数内部实现细节,整个函数的语义是十分明确的,使用者初始化调用 fibonacci 函数时得到返回值是真正的斐波那契生成器函数,用变量暂存起来,当需要生成斐波那契数字的时候再调用刚才暂存的变量就能真正生成斐波那契数列...闭包中使用的自由变量一般有值传递和引用传递两种形式,示例中的斐波那契数列生成器利用的是引用而循环变量示例用的是值传递. Go 不支持函数嵌套但支持匿名函数,语法层面的差异性掩盖不了闭包整体的统一性.

    62110

    汉诺塔问题(利用递归解决)内含斐波那契数列0.o

    递归的另一个缺点是递归的层数不能太多(不能递归太深)。那递归得太深了会怎样呢?答案是会爆栈。(以上内容为引用,我并不能理解爆栈的意思,希望有人可以给我解释一下~~) 再看一下递归函数的构成 以n!...斐波那契数列 也可以用递归函数实现斐波那契数列,在利用递归解决这个函数之前,我们先用迭代的思想解决它,并且在最后对比这两种方法: 1迭代利用函数!...#include // 迭代函数计算斐波那契数列 void fibonacci(int n) { int a = 0, b = 1, c; for (int i =...int main() { int n; // 输入要计算的斐波那契数列的项数 printf("输入要计算的斐波那契数列的项数: "); scanf("%d", &n);...#include //定义递归函数计算斐波那契数列 int fibonacci(int n){ if(n<=1) { return n;//如果n为0或1,结果为自身

    47310

    python实现斐波那契数列的多种方式

    python实现斐波那契数列的多种方式 斐波那契数列 1,1,2,3,5,8,13,21,34,55,89,144,233,377.....这个数列就是大名鼎鼎的斐波那契数列。...函数实现 1.递推法 首先忽略我代码中无聊的注释方法,哈哈哈~~~~ ############################## # 使用`递推法`实现斐波那契数列 # #############...2.递归法 ############################## # 使用`递归法`实现斐波那契数列 # ############################# def fib_recursive...,时间复杂度是O(1.618^n) 3.生成器 ############################## # 使用`生成器`实现斐波那契数列 # ########################...下面简单的解释一下矩阵乘法: ? 图中左数第一个矩阵的第一行每个元素和第二个矩阵的这一列每个元素做如下的运算: 2 * 1 + 1 * 0 = 2 得到的2作为第三个矩阵的第一行第一列的元素值。

    3.6K30

    【算法基础篇】(二十七)从记忆化搜索到动态规划:保姆级入门指南,带你吃透 DP 核心思想!

    3.1 斐波那契数列的递推实现 我们再回顾一下斐波那契数列的定义:F (0)=0,F (1)=1,F (n)=F (n-1)+F (n-2)。...在斐波那契数列中,我们用 f [i] 表示 “第 i 个斐波那契数”—— 这就是状态表示。 状态表示通常用数组(一维、二维甚至多维)来实现,数组的每个元素都对应一个 “子问题”。...在斐波那契数列中,状态转移方程是 f [i] = f [i-1] + f [i-2]。 推导状态转移方程的关键是 “拆分问题”:找到当前状态和之前状态之间的逻辑关系。...在斐波那契数列中,初始化是 f [0] = 0,f [1] = 1—— 这些是不需要通过转移方程就能直接确定的边界值。...在斐波那契数列中,填表顺序是 “从左往右”—— 因为计算 f [i] 需要 f [i-1] 和 f [i-2],而这两个状态在 i 之前已经计算过。

    39710

    每日一题(统计每个月兔子的总数,数列的和)

    统计每个月兔子的总数_牛客题霸_牛客网 (nowcoder.com) 这个问题实际上是著名的“斐波那契数列”(Fibonacci sequence)的一个应用。...斐波那契数列是这样一个序列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...,其中每个数字都是前两个数字的和。...所以,第n个月的兔子总数就是斐波那契数列的第n项。 在下面这段代码中,fibonacci 函数计算斐波那契数列的第n项。...在 main 函数中,我们读取用户输入的月份n,并调用 fibonacci 函数来计算第n个月的兔子总数。注意,由于兔子从第3个月开始生小兔子,所以实际上我们计算的是斐波那契数列的第n-2项。...#include // 函数用于计算斐波那契数列的第n项 int fibonacci(int n) { if (n <= 0) { return

    53510

    斐波那契数列的四种实现

    孔乙己自己知道不能和他们谈天,便只好向 Intern 说话。有一回对我说道,“你写过代码么?”我略略点一点头。他说,“写过代码,……我便考你一考。斐波那契数列的输出,怎样实现?”...将来做 Leader 的时候,开发项目要用。”我暗想我和 Leader 的等级还很远呢,而且我们 Leader 也从不在项目里写斐波那契;又好笑,又不耐烦,懒懒的答他道,“谁要你教,不是递归么?”...(改编自 鲁迅《孔乙己》) 在家闲着也是闲着,不如我们来看看,如何写一个输出斐波那契数列的代码吧。 先说下,什么是斐波那契数列?...简单来讲就是:数列中某一项的值,等于它的前一项加上前前一项的和。...(摘自 百度百科) 我曾经也把手写斐波那契作为面试题之一。 1. 递归 在编程教程中提到斐波那契数列,通常都是用来讲解递归函数。

    1.1K20

    DP入门之斐波那契数

    斐波那契数 力扣题目链接:https://leetcode-cn.com/problems/fibonacci-number 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。...该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。...(3) = F(2) + F(1) = 1 + 1 = 2 示例 3: 输入:4 输出:3 解释:F(4) = F(3) + F(2) = 2 + 1 = 3 提示: 0 <= n <= 30 思路 斐波那契数列大家应该非常熟悉不过了...动态规划 动规五部曲: 这里我们要用一个一维dp数组来保存递归的结果 确定dp数组以及下标的含义 dp[i]的定义为:第i个数的斐波那契数值是dp[i] 确定递推公式 为什么这是一道非常简单的入门题目呢...总结 斐波那契数列这道题目是非常基础的题目,我在后面的动态规划的讲解中将会多次提到斐波那契数列! 这里我严格按照关于动态规划,你该了解这些!

    76010

    斐波那契数列和10- II. 青蛙跳台阶问题

    题目描述 - 斐波那契那契数 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。...斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1....题目来源:https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。...b= sum; } return sum; } } 这样,斐波那契数的写法就差不多完成了。...斐波那契数列和10- II. 青蛙跳台阶问题"。斐波那契数列先分析了递归的耗时性,然后使用dp的思想来解决。后面,对青蛙跳台阶问题进行了分析,其和斐波那契数列有共性,可以作为一类问题一起解决。

    44220

    6个案例15分钟让你了解Python套路

    斐波那契数列 斐波那契数列(Fibonacci sequence)又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。...指的是这样一个数列:1、1、2、3、5、8、13、21、34、……这个数列从第3项开始,每一项都等于前两项之和。下面的代码示例展示了如何使用Python生成斐波那契数列。...(n) print(f"斐波那契数列的前{n}项是:{fib_sequence}") 代码解读: 函数fibonacci(n)用于生成斐波那契数列的前n项。...首先初始化列表fib_sequence为[1, 1],这是斐波那契数列的前两项。...通过6个经典案例,我们快速领略了Python编程的精髓:从九九乘法口诀的嵌套循环,到列表求和的多种方法;从素数判断的逻辑推理,到斐波那契数列的递归思想;再到冒泡排序和汉诺塔问题的算法实现,这些案例不仅展示了

    25810

    Python编程实战营:四款实用小项目助你快速入门,从零开始打造你的个人项目集!

    通过不断猜测和调试,你将体验到编程带来的乐趣,并学会如何优化代码以提高用户体验。 项目三:斐波那契数列探索 进入数学的世界,我们将一起探索斐波那契数列的奥秘。...通过编写代码来生成斐波那契数列,你将学会递归和迭代两种重要的编程思想。此外,你还将了解如何使用Python的内置函数和库来简化问题求解过程,提高编程效率。...三、斐波那契 斐波那契数列(Fibonacci sequence)是一个非常著名的数列,在自然界和计算机科学中都有广泛的应用。...下面是一个使用Python编写的斐波那契数列的示例,包括递归和迭代两种方法,并对每种方法进行了详细注释和说明。...在实际应用中,特别是在需要高效计算大量斐波那契数时,推荐使用迭代方法。

    91100

    前端算法题目解析

    2; } } return true; } console.log(isPrime(30)); // false console.log(isPrime(31)); // true 07-斐波那契数列...---- 什么是斐波那契数列: 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,...故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)...(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。...---- 思路: 从上面的定义得出,斐波那契数列的三种情况: F(1)=1 F(2)=1 F(n)=F(n-1)+F(n-2)(n>=3,n∈N\*) 试用递归实现 function fibonacci

    86230
    领券