斐波那契数列

php实现斐波那契数列

本小妞迷上赌 提交于 2020-03-07 13:06:50
数列从第三项开始,每一项都等于前两项之和。 F0=0,F1=1,Fn=F(n-1)+F(n-2) 递归版和非递归版。 [php] view plain copy <?php function fib( $n ){ $array = array (); $array [0] = 1; $array [1] = 1; for ( $i =2; $i < $n ; $i ++){ $array [ $i ] = $array [ $i -1]+ $array [ $i -2]; } print_r( $array ); } fib(10); echo "\n------------------\n" ; function fib_recursive( $n ){ if ( $n ==1|| $n ==2){ return 1;} else { return fib_recursive( $n -1)+fib_recursive( $n -2); } } echo fib_recursive(10); ?> 作为C和java的程序猿,在第一次在写非递归的时候,忘记了变量前加$,悲催。 输出结果 [php] view plain copy Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 5 [5] => 8 [6] => 13 [7] =

剑指offer-斐波那契数列

Deadly 提交于 2020-03-07 10:14:29
题目类型 递归 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 code class Solution { public : int Fibonacci ( int n ) { if ( n == 0 ) return 0 ; else if ( n == 1 || n == 2 ) return 1 ; else return ( Fibonacci ( n - 1 ) + Fibonacci ( n - 2 ) ) ; } } ; 运行时间:715ms 占用内存:504k 分析 糟心啊 居然把 n==1||n==2 写成 n==1||2 果然是太手生了 来源: CSDN 作者: NCY_92377 链接: https://blog.csdn.net/weixin_36313227/article/details/104708440

Python算法之斐波那契数列(五)

时光总嘲笑我的痴心妄想 提交于 2020-03-06 17:26:02
斐波那契数列(Fibonacci sequence): 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*); def fib ( n ) : # 定义函数fib() if n == 0 : return 0 # 如果n=0 则返回 0 elif n == 1 or n == 2 : return 1 else : # 否则返回 fib(n-1)+fib(n-2) return ( fib ( n - 1 ) + fib ( n - 2 ) ) n = int ( input ( '请输入要计算第几项斐波拉契数列:' ) ) for i in range ( n + 1 ) : # 计算前n项斐波拉契数列 print ( 'fib(%d)=%d' % ( i , fib ( i ) ) ) 需要注意的是,考虑到特殊情况,0、1、2的时候考录到n从1开始一直到无穷大,所以要将这三种情况单独分析。 来源: CSDN 作者: 六级不过不改名! 链接: https://blog.csdn.net/qq_44789425/article/details/104697755

7、斐波那契数列

不打扰是莪最后的温柔 提交于 2020-03-05 20:11:15
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39 public class Solution { public int Fibonacci ( int n ) { if ( n == 1 || n == 2 ) return 1 ; int i = 3 ; int a = 1 ; int b = 1 ; int result = 0 ; while ( i <= n ) { result = a + b ; a = b ; b = result ; i ++ ; } return result ; } } 来源: CSDN 作者: qq_41017546 链接: https://blog.csdn.net/qq_41017546/article/details/104679159

面试题10- I. 斐波那契数列(Leetcode)

这一生的挚爱 提交于 2020-03-04 05:51:00
面试题10- I. 斐波那契数列 难度简单8 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入: n = 2 输出: 1 class Solution { public: int fib(int n) { if(n == 0) return 0; if(n == 1) return 1; int a =0,b =1; int i = 2; for(;i<n + 1;++i) { if(i%2 == 0) a = (a + b)%(1000000007); else b = (a + b)%(1000000007); } return (i%2 ? a : b); } }; 来源: CSDN 作者: Yanpr919 链接: https://blog.csdn.net/Yanpr919/article/details/104640529

Go语言学习笔记(练习)

喜夏-厌秋 提交于 2020-03-02 04:34:45
斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*) 递归实现 package main import ( "fmt" ) func main() { for i := 0; i < 10; i++ { nums := fibonacci(i) fmt.Println(nums) } } func fibonacci(num int) int { if num < 2 { return 1 } return fibonacci(num-1) + fibonacci(num-2) } 闭包实现 Go的闭包实现,摘自golang官网,闭包下次在详细介绍一下 package main import "fmt" // fib returns a function that returns // successive Fibonacci numbers. func fib() func() int { a, b := 0, 1 return func() int { a, b = b, a+b return a } } func main() { f := fib() // Function calls are evaluated

剑指offer:斐波那契数列(C++/Python)

ⅰ亾dé卋堺 提交于 2020-03-01 12:37:47
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 斐波那契数列的递推表达式为: Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2) 思路一: 递归。时间复杂度大,牛客网运行不通过。代码如下。 C++ class Solution { public : int Fibonacci ( int n ) { if ( n == 0 ) return 0 ; if ( n == 1 ) return 1 ; return Fibonacci ( n - 1 ) + Fibonacci ( n - 2 ) ; } } ; **思路二:**非递归。 C++ class Solution { public : int Fibonacci ( int n ) { if ( n == 0 ) return 0 ; if ( n == 1 ) return 1 ; vector < int > Fib { 0 , 1 } ; //初始边界值 int temp ; for ( int i = 2 ; i <= n ; i ++ ) { temp = Fib [ i - 1 ] + Fib [ i - 2 ] ; //斐波那契数列的递推表达式 Fib . push_back ( temp

求斐波那契数列

情到浓时终转凉″ 提交于 2020-03-01 00:33:29
# include <stdio.h> # include <stdlib.h> int main ( ) { int f1 , f2 ; int f3 = 0 ; int n , j ; printf ( "输入斐波那契数列的前两个数:" ) ; scanf ( "%d %d" , & f1 , & f2 ) ; printf ( "输入斐波那契数列运行次数:" ) ; scanf ( "%d" , & n ) ; printf ( "斐波那契数列如下:\n" ) ; printf ( "%5d,%5d" , f1 , f2 ) ; for ( j = 2 ; j < n ; j ++ ) { f1 = f1 + f2 ; f2 = f1 + f2 ; printf ( "%5d,%5d" , f1 , f2 ) ; } return 0 ; } 运行图: 解释:运行次数指从第二个数开始 每次进行两次加法 流程图: 来源: CSDN 作者: 木木子! 链接: https://blog.csdn.net/qq_43279782/article/details/104578846

菲波那切数列

泪湿孤枕 提交于 2020-02-26 23:34:45
一、菲波那切数列的定义 (1)斐波那契数列的定义如下: (2)古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? (3)代码实现的功能: 1.打印输出前20位的斐波那契数 2.打印1-100之间的菲波那切数列 3.判断一个数是否是斐波那契数列 4.递归求解斐波那契数列 二、代码实现 package 练习 ; public class Feibo { public static void main ( String [ ] args ) { // TODO Auto-generated method stub /** * 1.打印输出前20位的斐波那契数 * 2.打印1-100之间的菲波那切数列 * 3.判断一个数是否是斐波那契数列 * 4.递归求解斐波那契数列 */ forFeibo ( ) ; whilefeibo ( ) ; Isfeibo ( 50 ) ; System . out . println ( "第10位斐波那契数是:" + fib ( 10 ) ) ; } //1.打印输出前20位的斐波那契数 public static void forFeibo ( ) { long a1 = 1 , a2 = 1 , result = 0 ; for ( int i = 3 ;

每日刷题_牛客_跳台阶

一个人想着一个人 提交于 2020-02-26 14:05:04
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 主要思路 如果你刚看完上到的斐波那契数列,再看这道题是不是有些熟悉。没有?高数中有个很牛皮的找规律方法。相信你一定知道它是啥 。【数学归纳】 但大致看一下 首先看跳第一级。只要一种方法 跳第二级有。2种 跳第三级呢。先看是怎么跳上第三级的。它可是是从3-1级跳的,也可能是从3-2级跳的。跳3-1级也就是第二级的方法已经有了,同理跳到3-2级也就是第一级的方式也就用了。(只要我们有点概率论的基础我们就知道这里要做加法操作)即跳第三级的方式=第一级的方式+跳第二级的方式 那么第i级呢 同理(i-1)的方式+(i-2)的方式 这不就是斐波那契数列的算法吗 不同点在于。斐波那契数列的第二项=第零项+第一项=1 这里的可不是。这里跳到第二级的方式是2 修改一下即可 我的代码 //方法一。重新设置n=2的值 function jumpFloor ( number ) { // write code here if ( number == 0 ) { return 0 ; } if ( number == 1 ) { return 1 ; } if ( number == 2 ) { return 2 ; } let arr = [ ] ; arr [ 0 ] = 0