【算法】 斐波那契数列

        /// <summary>
        /// 递归方式
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int Fn(int n)
        {
            if (Default(n)) return 1;
            return Fn(n - 1) + Fn(n - 2);
        }

        /// <summary>
        /// 循环方式
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static int FnFor(int n)
        {
            if (Default(n)) return 1;
            int first = 1;
            int second = 1;
            for (int i = 3; i <= n; i++)
            {
                second = first + (first = second);
            }
            return second;
        }

        /// <summary>
        /// 默认处理
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        private static bool Default(int n)
        {
            if (n <= 0)
            {
                throw new Exception("输入的数字必须是大于0的整数");
            }
            return n <= 2;
        }
时间: 2024-10-12 18:54:03

【算法】 斐波那契数列的相关文章

最优化算法-斐波那契数列搜索

斐波那契数列搜索,参考Edwin<最优化导论>第四版7.3章节,算法采用go语言实现. /***************************************** * FileName : fibonacci_search.go * Author : fredric * Date : 2017.09.01 * Note : 斐波那契数列搜索算法 * History : *****************************************/ package search

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

《BI那点儿事》Microsoft 时序算法——验证神奇的斐波那契数列

斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368斐波那契数列的发明者,是意大利数学家列昂纳多·斐波那契(Leonardo Fibonacci),生于公元1170年,卒于1250年,籍贯是比萨.他被人称作“比萨的列昂纳多”.1202年,他撰写了<算盘全书>(Liber Abacci)一书.他是第一个研究了

斐波那契数列公式算法-JS实现

之前算斐波那契数列都是算前两个数相加实现的 比如0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368 2=1+1 3=1+2 5=2+3 8=3+5 …… 其实还有另外一个规律: 2 = 1*2-03 = 2*2-15 = 3*2-18 = 5*2-213= 8*2-321=13*2-5 …… 下面是JS实现的代码: <!DOCTYPE h

算法——动态规划篇——斐波那契数列

斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了<斐波纳契数列>季刊,专门刊载这方面的研究成果. 以上内容来自百度百科.. 今天主要是想用动态规划的思想求解斐波那契数列,用来观察动态规划带来的优势,空间换时间,不重复求解

算法题---k阶斐波那契数列

#include <iostream> #include <cstdio> #include <stdlib.h> #include <algorithm> using namespace std; int main() { int a[120]; int k, m; while (1) { cout << "输入阶数k和约定的常数max.k和max用空格分开." << endl; cin >> k &

算法导论-求(Fibonacci)斐波那契数列算法对比

目录 1.斐波那契数列(Fibonacci)介绍 2.朴素递归算法(Naive recursive algorithm) 3.朴素递归平方算法(Naive recursive squaring) 4 .自底向上算法(Bottom-up) 5. 递归平方算法(Recursive squaring) 6.完整代码(c++) 7.参考资料 内容 1.斐波那契数列(Fibonacci)介绍 Fibonacci数列应该也算是耳熟能详,它的递归定义如上图所示. 下面2-6分别说明求取Fibonacci数列的

C语言算法:完善当年自编的k阶斐波那契数列

以下为大二时候的日志回放:" 题目扩展到K阶, k阶斐波那契数列, 1阶(即k=1):1.1.1.1.1.1.1.-- a0=a[1-1]=1,a1=1,a2=1,a3=1,a4=1,a5=1,a6=1-- 3阶(k=3):0.0.1.1.2.4.7..... a0=0,a1=0,a2=a[3-1]=1,a3=0+0+1=1,a4=0+1+1=2,a5=1+2+4=7 4阶:0.0.0.1.1.2.4.8.15.27-- a0=0,a1=0,a2=0,a3=a[4-1]=1,a4=1,a5=2,

经典算法___斐波拉契数列

分享一段斐波拉契数列的例子,不过我对算法没怎么接触过,只能写出最简单,最基本的 def fibs(num):     result = [0,1]         #斐波拉契数列初始变量          for i in range(num-2):      #循环,因为上边已经有两个变量,所以-2              result.append(result[-2] + result[-1])       #吧倒数第一项与倒数第二项相加作为最后一项的值              ret

剑指offer-第二章算法之斐波拉契数列(青蛙跳台阶)

递归与循环 递归:在一个函数的内部调用这个函数. 本质:把一个问题分解为两个,或者多个小问题(多个小问题相互重叠的部分,会存在重复的计算) 优点:简洁,易于实现. 缺点:时间和空间消耗严重,如果递归调用的层级太多,就会超出栈容量. 循环:通过设置计算的初始值及终止条件,在一个范围内重复运算. 斐波拉契数列 题目一:写一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项,定义如下: 第一种解法:用递归的算法: long long Fabonacci(unsigned int n) { i