分治法之斐波拉契数列

2023-10-17 09:30
文章标签 数列 分治 波拉 法之斐

本文主要是介绍分治法之斐波拉契数列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 斐波拉契数列
  • 一、问题描述
  • 二、代码实现
    • 2.打印结果
  • 下一篇


斐波拉契数列


一、问题描述

假设一对出生兔子要一个月才到成熟,而一堆成熟兔子每个月会生一对小兔子,那么从一对初生兔子开始
假设所有兔子不死,请计算n个月后兔子对数?

二、代码实现

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Sat Nov 13 12:20:34 2021@author: lenovo
问题描述;
假设一对出生兔子要一个月才到成熟,而一堆成熟兔子每个月会生一对小兔子,那么从一对初生兔子开始
假设所有兔子不死,请计算n个月后兔子对数?
"""def fib(n):if n == 1 or n == 2:return 1elif n > 2:return fib(n-1)+fib(n-2)return "参数不符合规范"print(fib(10))
print(fib(1))
print(fib(0))

2.打印结果

在这里插入图片描述


下一篇

分治法之汉诺塔问题

这篇关于分治法之斐波拉契数列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/224473

相关文章

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

UVa 10820 Send a Table (Farey数列欧拉函数求和)

这里先说一下欧拉函数的求法 先说一下筛选素数的方法 void Get_Prime(){ /*筛选素数法*/for(int i = 0; i < N; i++) vis[i] = 1;vis[0] = vis[1] = 0;for(int i = 2; i * i < N; i++)if(vis[i]){for(int j = i * i; j < N; j += i)vis[j] =

【练习7】Fibonacci数列

链接:https://www.nowcoder.com/practice/18ecd0ecf5ef4fe9ba3f17f8d00d2d66 分析: 当n为15的时候,可以用Math.min(c-n,n-b)来判断哪个是变成斐波那契数的最小步数。 public class Main {public static void main(String[] args) {Scanner i

牛客《剑指Offer》 -- 斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 思路 对于n=0,应返回0。 class Solution {public:int Fibonacci(int n) {if(n==0) return 0;if(n==1||n==2) return 1;int a=1,b=1,c;n= n-2;for(int i =0

分治算法与凸包问题

1. 什么是凸包问题? 凸包问题是计算几何中的经典问题。给定二维平面上的点集,凸包是一个最小的凸多边形,它包含了点集中所有的点。你可以把凸包想象成一根松紧带将所有点紧紧包裹住的样子,凸包的边缘仅沿着最外面的点延伸。 2. 分治法简介 分治算法是解决复杂问题的强大策略,它的思想是将问题分解为多个子问题,分别解决这些子问题后再合并得到最终解。凸包问题可以通过分治算法高效地解决,时间复杂度可以达到

面试题41:和为s的两个数VS和为s的连续正数数列

问题说明: 1.和为s的两个数问题是从一个排序的数组中找出和为s的两个数; 2.原题是找出一个即可,现在全部找出; 3.和为s的连续正数数列是给定一个数找出所有连续正数数列的和为s,例如s为9,(2,3,4)就是其中一组。 (一)和为s的两个数问题 public static int findNumbersWithSum(int[] sorted, int fromIndex, in

【COGS】577 蝗灾 cdq分治

传送门:【COGS】577 蝗灾 题目分析:cdq分治入门题= =。。。。用差分思想将矩阵分成四块来计算。。排序一维,另一维用树状数组解决。 代码如下: #include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std ;#define REP(

【ACdream】1157 Segments cdq分治

传送门:【ACdream】1157 Segments 题目分析:第一题cdq(陈丹琦)分治!cdq_____Orz! 听说cdq分治可以写,就去学了cdq分治了。。 在我们平常使用的分治中,每一个子问题只解决它本身(可以说是封闭的)。 而在cdq分治中,对于划分出来的两个子问题,前一个子问题用来解决后一个子问题而不是它本身。 具体算法流程如下: 1.将整个操作序列分为两个长

【HDU】4871 Shortest-path tree 最短路+点分治

传送门:【HDU】4871 Shortest-path tree 题目分析: 学了点分治后来看这道题,简直就是水题。。。 但是我竟然花了将近一个晚上才写出来。。。就因为一个地方写漏了T U T。。 首先根据题意求一棵树,最短路一下,然后最小字典序就按照编号顺序遍历邻接表给节点标记。 剩下的就是树分治的事了。 在以重心X为根的子树中,按照X的子节点v的子树中最长路径包含节点数升序遍