斐波那契

使用斐波那契数兔子

∥☆過路亽.° 提交于 2020-01-17 13:19:42
package com.example.demo.contorller; public class test1 { public static void main(String[] args) { //f(n) = f(n - 1) + f(n - 2)斐波那契约 //有一对兔子,第三个月就能生一对兔子,以后每个月这一对兔子都生一对兔子;新出生的兔子第三个月也能开始生兔子,也是之后每个月都生一对兔子 math ma=new math(); for (int i=1;i<=30;i++){ System.out.println(math.fmath(i)); } } } class math{ public static int fmath(int x){ if (x==1||x==2){ return 1; }else{ return fmath(x-1)+fmath(x-2); } } } 来源: CSDN 作者: 优秀是一种信仰 链接: https://blog.csdn.net/weixin_40593587/article/details/104016022

「算法」斐波那契数 & 反转字符串

不羁岁月 提交于 2020-01-10 07:52:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 00509 斐波那契数 题目描述 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 给定 N,计算 F(N)。 示例 1: 输入:2 输出:1 解释:F(2) = F(1) + F(0) = 1 + 0 = 1. 示例 2: 输入:3 输出:2 解释:F(3) = F(2) + F(1) = 1 + 1 = 2. 示例 3: 输入:4 输出:3 解释:F(4) = F(3) + F(2) = 2 + 1 = 3. 提示: 0 ≤ N ≤ 30 力扣地址 https://leetcode.com/problems/fibonacci-number/ https://leetcode-cn.com/problems/fibonacci-number/ 解题报告 本题解由微信公众号 小猿刷题 提供, 错误之处, 欢迎指正. 基于递归实现 /** * 微信公众号"小猿刷题" */ public int fib(int N) { if(N == 0){ return 0; } if(N == 1){ return 1;

RabbitMQ中文文档PHP版本(六)--远程过程调用(RPC)

喜欢而已 提交于 2020-01-07 00:21:18
2019年12月10日10:05:54 原文: https://www.rabbitmq.com/tutorials/tutorial-six-php.html 远程过程调用(RPC) (使用 php-amqplib ) 先决条件 本教程假定RabbitMQ 已 在标准端口( 5672 )的 本地主机 上 安装 并运行 。 如果您使用其他主机,端口或凭据,则连接设置需要进行调整。 在哪里获得帮助 如果您在阅读本教程时遇到困难,可以 通过邮件列表 与我们 联系。 在 第二篇教程中, 我们学习了如何使用 工作队列 在多个工作人员之间分配耗时的任务。 但是,如果我们需要在远程计算机上运行功能并等待结果怎么办? 好吧,那是一个不同的故事。 这种模式通常称为“ 远程过程调用” 或“ RPC” 。 在本教程中,我们将使用RabbitMQ构建RPC系统:客户端和可伸缩RPC服务器。 由于我们没有值得分配的耗时任务,因此我们将创建一个虚拟RPC服务,该服务返回斐波那契数。 客户端界面 为了说明如何使用RPC服务,我们将创建一个简单的客户端类。 它将公开一个名为 call 的方法,该方法 发送RPC请求并阻塞,直到收到答案为止: $ fibonacci_rpc = 新的 FibonacciRpcClient(); $ response = $ fibonacci_rpc-> call(30);

JZOJ 3769.【NOI2015模拟8.14】A+B

强颜欢笑 提交于 2019-12-21 19:59:01
D e s c r i p t i o n Description D e s c r i p t i o n 定义 斐波那契表示序列 是用形如 y = ∑ i = 1 ∞ F b i A i y=\sum_{i=1}^{\infty}Fb_iA_i y = ∑ i = 1 ∞ ​ F b i ​ A i ​ 表示 y y y 的序列 A A A 给定两个长度为 n , m n,m n , m 的斐波那契最大表示序列,求它们和的斐波那契最大表示序列 定义更大的斐波那契序列是在长度更大的基础上,字典序尽量大 数据范围: n ≤ 1 0 6 n\leq 10^6 n ≤ 1 0 6 S o l u t i o n Solution S o l u t i o n 首先两个表示序列先相加,然后重复以下操作直到序列中只有0或1(易证这样的情况下是最优的) 对于相邻的1,不断做合并 对于各种的2,前后发散 由于在最坏条件下算法会跌落成 O ( n 2 ) O(n^2) O ( n 2 ) ,但是似乎也没有什么更好的解法了 于是就 O ( 玄 学 ) O(玄学) O ( 玄 学 ) 过掉了 C o d e Code C o d e # include <cctype> # include <cstdio> # include <algorithm> # define LL long long

青蛙跳台阶(斐波那契)

拥有回忆 提交于 2019-12-18 11:38:44
public void F(int num,int n,String str) { //递归先写终止条件 if(num>n) { return ; } if(num==n) { System.out.println(str); return; } //往后递归 F(num+1, n, str+“1”);//这是新字符串 F(num+2, n, str+“2”); } 来源: CSDN 作者: qq_42265608 链接: https://blog.csdn.net/qq_42265608/article/details/103591629

【转】斐波那契博弈(Fibonacci Nim)

蓝咒 提交于 2019-12-16 17:39:50
有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗; 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的2倍。 约定取走最后一个石子的人为赢家,求必败态。 结论: 当n为Fibonacci数的时候,必败。 f[i]:1,2,3,5,8,13,21,34,55,89…… 用第二数学归纳法证明: 为了方便,我们将n记为f[i]。 1、当i=2时,先手只能取1颗,显然必败,结论成立。 2、假设当i<=k时,结论成立。 则当i=k+1时,f[i] = f[k]+f[k-1]。 则我们可以把这一堆石子看成两堆,简称k堆和k-1堆。 (一定可以看成两堆,因为假如先手第一次取的石子数大于或等于f[k-1],则后手可以直接取完f[k],因为f[k] < 2*f[k-1]) 对于k-1堆,由假设可知,不论先手怎样取,后手总能取到最后一颗。下面我们分析一下后手最后取的石子数x的情况。 如果先手第一次取的石子数y>=f[k-1]/3,则这小堆所剩的石子数小于2y,即后手可以直接取完,此时x=f[k-1]-y,则x<=2/3*f[k-1]。 我们来比较一下2/3*f[k-1]与1/2*f[k]的大小。即4*f[k-1]与3*f[k]的大小,对两值作差后不难得出,后者大。 所以我们得到,x<1/2*f[k]。 即后手取完k-1堆后

【51nod1355】斐波那契的最小公倍数(min - max容斥)(容斥)(反演)

六月ゝ 毕业季﹏ 提交于 2019-12-11 20:49:47
题意: 给 m m m 个数 a i a_i a i ​ ,求 l c m ( f i b ( a i ) ) lcm(fib(a_i)) l c m ( f i b ( a i ​ ) ) , m ≤ 4 e 5 , a i ≤ 1 e 6 m\le 4e5, a_i\le 1e6 m ≤ 4 e 5 , a i ​ ≤ 1 e 6 ,对 1 e 9 + 7 1e9+7 1 e 9 + 7 取模 首先我们知道斐波那契数列的一些性质 g c d ( f i b i , f i b i − 1 ) = 1 gcd(fib_i,fib_{i-1})=1 g c d ( f i b i ​ , f i b i − 1 ​ ) = 1 f n + m = f m + 1 ∗ f n + f m ∗ f n − 1 f_{n+m}=f_{m+1}*f_n+f_m*f_{n-1} f n + m ​ = f m + 1 ​ ∗ f n ​ + f m ​ ∗ f n − 1 ​ g c d ( f n + m , f n ) = g c d ( f m + 1 ∗ f n + f m ∗ f n − 1 , f n ) = g c d ( f m , f n ) ⇒ g c d ( f n , f m ) = f g c d ( n , m ) gcd(f_{n+m},f_n)=gcd(f_

计算第n个斐波那契数(递归,非递归)

拈花ヽ惹草 提交于 2019-12-05 23:34:39
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> 递归: int Fibo(int n){ if (n <= 2) { return 1; } else { return(Fibo(n - 2) + Fibo(n - 1)); } } int main(){ int n; scanf("%d", &n); printf("第%d个斐波那契数为:%d\n", n,Fibo(n)); system("pause"); return 0; } 非递归: int main(){ int a = 1; int b = 1; int c = 1; int n; printf("请输入一个数: "); scanf("%d", &n); for (; n > 2; n--) { c = a + b; b = a; a = c; } printf("它的斐波那契数为:%d", c); system("pause"); return 0; } 来源: https://my.oschina.net/u/4251026/blog/3134937

线性反馈移位寄存器(LFSR)

一个人想着一个人 提交于 2019-12-05 23:14:25
   LFSR用于产生可重复的伪随机序列PRBS,该电路有n级触发器和一些异或门组成,如下图所示。 其中,gn为反馈系数,取值只能为0或1,取为0时表明不存在该反馈之路,取为1时表明存在该反馈之路;这里的反馈系数决定了产生随机数的算法的不同。用反馈函数表示成y=a0x^0+a1x+a2x^2.......反馈函数为线性的叫线性移位反馈序列,否则叫非线性反馈移位序列。 LFSR的初始值被称为伪随机序列的种子,影响下一个状态的比特位叫做抽头。LFSR的触发器编号一般从1开始,抽头取值范围是1到 2 n -1 。抽头序列可以用来描述该LFSR的反馈多项式。由n个触发器构成的LFSR电路可以产生一个周期为2 n -1的序列。 理论表明,要使 LFSR 得到最长的周期, 这个抽头序列构成的多 项式加 1 就是其反馈多项式 , 必须是一个 本原多项式 ,也就是说这个多项式不可约,比方下图的抽头序列为(4,1),其对应的反馈多项式为 ,其对应的线性反馈移位寄存器电路如下所示。 假设 的初始值各自是 1 0 0 0 ,反馈函数选取 ,那么得到例如以下序列 能够看出周期为 15 。在这一个周期里面涵盖了开区间 内的全部整数,而且都是没有固定顺序出现的,有非常好 的随机性。   目前常用的LFSR电路可分为斐波那契LFSR和伽罗瓦LFSR。 斐波那契LFSR      

20182330 2019-2020-1 《数据结构与面向对象程序设计》实验七报告

半腔热情 提交于 2019-12-04 17:44:07
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验七报告 课程:《程序设计与数据结构》 班级: 1823 姓名: 魏冰妍 学号:20182330 实验教师:王志强 实验日期:2019年11月4日 必修/选修: 必修 1.实验内容 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。 要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位。提交运行结果图。 重构你的代码。把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)。把测试代码放test包中。 重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种) 参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试提交运行结果截图 补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)。测试实现的算法(正常,异常,边界)提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分) 2.