精华内容
下载资源
问答
  • js 菲波那切数列
    2019-01-31 16:12:43

    JS 实现菲波那切数列

    菲波那契数列指的是这样一个数列:
    1,2,3,4,5,6,7,8,9,10
    1,1,2,3,5,8,13,21 ,34,55 , 89 , 144 ……

    输入 第 n项,输出第n项的值、;
    即输入3,输出3;
    输入5,输出5;
    输入6,输出8;

    1、第一种方法,用递归的方法

    function fun(num){
    		if(num<=1){
    				return num
    		}
    		//
    		return  fun(num-1)+fun(num-2)
    }
    

    递归的改良版

    function fun(num){
    				
    		var Arr=[0,1]
    		function calc(n){
    			if(n<=1){
    				return Arr[n]
    			};
    			if(Arr[n]){
    				return Arr[n]
    			}
    			var data= calc(n-1)+calc(n-2)
    			//保存住已经算过的值
    			Arr[n]=data;
    			return data
    		}
    		return calc(num)
    				
    }
    

    2、循环计算

    function fun(num){
    			if(num<=1){
    				return num
    			};
    			var one=0;
    			var two=1;
    			var three=0;
    			for(var i=2;i<=num;i++){
    				
    				three=one+two;
    				one= two;
    				two=three;
    			}
    			return three
    }
    
    更多相关内容
  • 菲波那切数列

    2020-02-26 21:54:03
    一、菲波那切数列的定义 (1)斐波那契数列的定义如下: (2)古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为...

    一、菲波那切数列的定义

    • (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; i <= 20 ;i++) {
    			result = a1 + a2 ;
    			a1 = a2;
    			a2 = result ;
    			System.out.print(result+"  ");
    		}
    		
    	}
    	//2.打印1-100之间的菲波那切数列
    	public static void whilefeibo() {
    		long a1 = 1 , a2 = 1 , result = 0;
    		while((a1 + a2) < 100) {
    			result = a1 + a2 ;
    			a1 = a2 ;
    			a2 = result ;
    			System.out.print(result + "  ");
    		}
    	}
    	//3.判断一个数是否是斐波那契数列
    	public static void Isfeibo(long num) {
    		boolean result = true;
    		long a1 = 1;
    		long a2 = 1;
    		//判断num是否小于等于1
    		if(num == a1) {
    			System.out.println("YES");
    		}
    		else if(num < a1){
    			System.out.println("NO");
    		}
    		
    		while(result) {
    			a1 = a1 + a2;
    			a2 = a1 + a2;
    			if(a1 == num || a2 == num) {
    				result = false ;
    				System .out.println("YES");
    			}
    			else if(num < a2) {
    				result = false ;
    				System .out.println("NO");
    			}
    		}
    	}
    	//递归求解
    	public static long fib(long n) {
    		if(n == 1 || n == 2) {
    			return 1;
    		}
    		return fib(n-1) + fib (n-2);
    	}
    }
    
    
    展开全文
  • 菲波那切数列数组求法 原创代码VC2008版
  • 菲波那切数列的前n项求和……用for循环做法
  • 不使用递归和数组求解斐波那契数列题目:斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...用户输入项数完就告诉他该项的值(要求不使用递归和数组)解:核心代码如下:public int run22(int n) {int ...

    不使用递归和数组求解斐波那契数列

    题目:

    斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...

    用户输入项数完就告诉他该项的值(要求不使用递归和数组)

    解:

    核心代码如下:

    public int run22(int n) {

    int result = 1;

    if (n > 2) {

    int first = 1;

    int second = 1;

    int third = 1;

    for (int i = 3; i <= n; i++) {

    for (int j = 1; j <= i; j++) {

    if (j == (i - 2)) {

    first = second;

    }

    if (j == (i - 1)) {

    second = third;

    }

    if (j == i) {

    third = first + second;

    }

    }

    result = third;

    }

    }

    return result;

    }

    /**

    不用递归求菲波那切数列:

    1,1,2,3,5,8.....

    f s t

    f s t

    f s t

    */

    public int test7(int n) {

    int f = 1, s = 1, t = 1;

    if (n > 2) {

    for (int i = 3; i <= n; i++) {

    f = s;

    s = t;

    t = f + s;

    }

    return t;

    } else {

    return f;

    }

    }

    使用数组的核心代码:

    public int run21(int n) {

    int result = 1;

    int[] array = new int[100];

    for (int i = 0; i < n; i++) {

    array[i] = 1;

    if (i > 1) {

    array[i] = array[i - 1] + array[i - 2];

    }

    result = array[i];

    }

    return result;

    }

    使用递归的核心代码:

    public int run2(int n) {

    int result = 1;

    if (n > 2) {

    result = run2(n - 1) + run2(n - 2);

    }

    return result;

    }

    通过求解斐波那契数列这个例子,以及使用的三种思路来看,递归的好处一目了然,代码量明显比其它两种思路少很多,而且思路更简单。

    递归的核心思路其实就是一直循环直到最底层然后一层一层找回来,所以思考递归的第一步就是想最底层的情况,然后再考虑后面的递增情况。

    展开全文
  • cpp代码-菲波那切数列

    2021-07-14 22:48:22
    cpp代码-菲波那切数列
  • 菲波那切数列几种实现递归for循环while循环特征方程 个人一点愚见,有问题还望指出勿喷 特征方程是看过大佬们的结果才知道的,还特意去学习了被忘掉的特征方程. 递归 /** * 递归计算 * 时间复杂度O(n^2) * * @...

    菲波那切数列几种实现


    个人一点愚见,有问题还望指出勿喷
    特征方程是看过大佬们的结果才知道的,还特意去学习了被忘掉的特征方程.

    递归

    	/**
         * 递归计算
         * 时间复杂度O(n^2)
         * 如果n比较大时会导致假死,因为递归计算太费时间,每次计算次数大致可以参考2的n次方
         * @param n 位置
         * @return int
         */
        private static int fibRecursion(int n) {
            if (n < NUM) {
                return n;
            }
            return fibRecursion(n - 1) + fibRecursion(n - 2);
        }
    

    for循环

     /**
         * for循环计算
         * 时间复杂度O(n)
         *
         * @param n 位置
         * @return int
         */
        private static int fibLoop(int n) {
            if (n < NUM) {
                return n;
            }
            int first = 0;
            int second = 1;
            for (int i = 0; i < n - 1; i++) {
                int temp = first + second;
                first = second;
                second = temp ;
            }
            return second;
        }
    

    while循环

    /**
         * 循环计算
         * 时间复杂度O(n)
         *
         * @param n 位置
         * @return int
         */
        private static int fibWileLoop(int n) {
            if (n < NUM) {
                return n;
            }
            int first = 0;
            int second = 1;
            while (n-- > 1) {
                second += first;
                first = second - first;
    
            }
            return second;
        }
    

    特征方程

    /**
         * 特征方程
         * 时间复杂度O(1)
         * 自测时丢失精度
         * @param n 位置
         * @return int
         */
        private static int fibMath(int n) {
            double c = Math.sqrt(5);
            return (int) (((Math.pow((1 + c) / 2, n) - Math.pow((1 - c) / 2, n)) / c));
        }
    
    展开全文
  • cpp代码-矩阵求菲波那切数列
  • 题目 大家都知道斐波那契数列,现在要求输入一个...菲波那切数列: f(x)={0,n=01,n=1f(n−1)+f(n−2),n&gt;1 f(x)=\left\{ \begin{aligned} &amp;0, n=0 \\ &amp;1, n=1 \\&amp;f(n-1)+f(n-...
  • 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 1 开始,之后的...
  • 斐波那契数列(0,1,1,2,3,5,8…),现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 1.使用数组实现 //输入:4 返回值:3 #include<stdio.h> int Fibonacci(int n) { /...
  • def nums(x, y): print(x) if x + y &amp;gt; 100: return '结束' x, y = y, x + y return nums(x, y) print(nums(1,2))
  • 菲波那切数列问题 #include #include #include #include using namespace std; int n,len=1,f[5003][5003];//f[k][i]--第k阶台阶所对应的走法数 void hp(int k)//高精度加法,k来存阶数 { int i; for(i=1;i;i++) f...
  • java蓝桥杯1---菲波那切数列---实现与解释
  • 菲波那切数列(Java)

    千次阅读 2018-06-03 09:08:22
    题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:知识点:递归:是在一个函数的内部调用这个函数自身。循环:则是通过设置计算的初始值及终止条件,在一个范围内重复运算。...
  • } } } 那波斐切数列 public class Test07{ /** 需求:有一对兔子,从出生后第3个月起每个月都生对兔子, 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死, 问n月的兔子总数为多少? 找规律:当月兔子...
  • 使用python实现菲波那切数列

    千次阅读 2017-12-11 16:12:19
    菲波那切数列:0,1,1,2,3,5,8,13,21,34,55,89,144,233 这个就是我们常见的菲波那切数列菲波那切数列的特点之一就是除了前两项后面任意一项都是他前面的两项之后得到的 纳闷如何使用python实现这个数列的表现...
  • 面试题9:菲波那切数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n 代码: package offer; /** * 面试题9:菲波那切数列 * 大家都知道...
  • 不要自卑,去提升实力 互联网行业谁技术牛谁是爹 ...斐波那契数列。 解题思路: > 利用递归就好 代码: def fib(n): if n==1 or n==2: return 1 return fib(n-1)+fib(n-2) print(fib(3)) ...
  • Linux--用shell脚本实现菲波那切数列

    千次阅读 2017-07-08 12:05:09
    用循环方式用循环的方式#! /bin/bash循环 first=1 second=1 last=1if [ $1 -le 2 ];then echo 1 fii=3 while [ $i -le $1 ] do let last=first+second let first=second let second=last
  • H 取石子游戏.c 简单的博弈题

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,234
精华内容 893
关键字:

菲波那切数列

友情链接: Modbus_TCP.rar