费波那契数列算法

作者:白宁超

2016年10月27日20:06:54

斐波那契数学描述:

F0 = 0     (n=0)

F1 = 1    (n=1)

Fn = F[n-1]+ F[n-2](n=>2)

Python语言实现:

分析:当n=0时为0,n=1时为1,n>2时,最后两数之和。由此可知,链表fibs初始化0,1;列表可以当做链表使用,具有负数索引特性,采用后两位数相加追加即可。

import datetime

#由于斐波那契特性前两首0,1,其后各项均为之前两数之和可知,时间复杂度O(n)

def fib(n):

fibs=[0,1]

for i in range(n-2): #开始两项已知

fibs.append(fibs[-2]+fibs[-1])

return fibs[-1]

#迭代实现,时间复杂度O(n)

def fib1(n):

a,b = 0,1

for i in range(n-1):

a,b= b,a+b

return a

#递归算法实现,其中n=0返回0,n=1返回1,n>=2返回之前两项之和,时间复杂度O(nlgn)

def fib12(n):

if n == 0:

return 0

elif n == 1:

return 1

else:

return fib1(n-2)+fib1(n-1)

# 递归进行初始化O(nlgn)

def fib3(n):

init = {0: 0, 1: 1}

if not n in init:

init[n]=fib2(n-2)+fib2(n-1)

return init[n]

print(datetime.datetime.now())

#print("1\t"+str(fib(10000))) #0.1S

print(datetime.datetime.now())

print("2"+str(fib3(10000))) #0.8s

print(datetime.datetime.now())

#print("3\t"+str(fib1(30))) #3.4s

print(datetime.datetime.now())

#print("4\t"+str(fib2(30)) #7.1s

print(datetime.datetime.now())

Java代码实现:

class Ideone

{

public static void main (String[] args) throws java.lang.Exception

{

int fibnum=fib1(1000);

System.out.println(fibnum);

}

//递归算法

public static int fib(int n){

if(n==0) return 0;

else if(n==1) return 1;

else return fib(n-1)+fib(n-2);

}

//非递归算法

public static int fib1(int n){

int a=0,b=1,temp=0;

for(int i=0;i

temp=a;

a=(a+b);

b=temp;

}

return a;

}

}

C语言代码实现:

#include

int fib(int n);

int main(void) {

// your code goes here

int fibnum=fib1(10);

printf("%d",fibnum);

return 0;

}

//递归算法

int fib(int n){

if(n==0) return 0;

else if (n==1) return 1;

else return fib(n-1)+fib(n-2);

}

//非递归算法

int fib1(int n){

int a=0,b=1,temp=0;

for(int i=0;i

temp=a;

a=(a+b);

b=temp;

}

return a;

}

C#代码实现:

public class Test

{

public static void Main()

{

// your code goes here

int fibnum=fib1(10);

Console.WriteLine(fibnum);

}

//递归算法

public static int fib(int n){

if(n==0) return 0;

else if(n==1) return 1;

else return fib(n-1)+fib(n-2);

}

//非递归算法

public static int fib1(int n){

int a=0,b=1,temp=0;

for(int i=0;i

temp=a;

a=(a+b);

b=temp;

}

return a;

}

}

c语言函数调用费波那楔数列,【算法】费波那契数列算法相关推荐

  1. 面试官问你斐波那契数列的时候不要高兴得太早 搞懂C语言函数指针 搜索引擎还可以这么玩? 那些相见恨晚的搜索技巧...

    面试官问你斐波那契数列的时候不要高兴得太早 前言 假如面试官让你编写求斐波那契数列的代码时,是不是心中暗喜?不就是递归么,早就会了.如果真这么想,那就危险了. 递归求斐波那契数列 递归,在数学与计算机 ...

  2. C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)

    众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0  1  1  2  3  5  8  13  21...... 下面我们将介绍四种方法来用C语言计算机 ...

  3. c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)

    经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...

  4. 利用graphviz模块展示斐波那契数列的递归函数调用图(Python)

      在博客动态规划法(一)从斐波那契数列谈起中,在求解斐波那契数列的第n项时,我们采用了递归方法和动态规划法来求解,当然递归方法的效率很差.本文将利用graphviz模块来展示斐波那契数列的递归函数调 ...

  5. HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)

    Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...

  6. HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Li ...

  7. hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)

    M斐波那契数列                                                                           Time Limit: 3000/1 ...

  8. c++调用cplex求解例子_递归算法的R语言实现 (罗汉塔、九连环、斐波那契数列等问题的求解)...

    递归算法用函数来实现,通俗地说就是函数对自身的调用,求解递归问题就转化为函数的调用关系问题.函数f(n)随自变量n的增加而变化,函数的调用关系也就表现为f(n)与f(n-1)或f(n-2)关系的问题. ...

  9. C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)

    本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...

  10. c语言n次方怎么输入_C语言实现斐波拉契数列

    C语言实现斐波拉契数列教程 怎么使用 C 语言实现计算斐波拉契数列的第 N 项的值? C语言实现斐波拉契数列详解 背景知识 斐波那契数列是一组第一位和第二位为 1,从第三位开始,后一位是前两位和的一组 ...

最新文章

  1. C语言 条件编译详解
  2. hapRroxy 安装配置详解
  3. 使用phpstorm+wamp实现php代码实时调试审计
  4. C/S通信模型与B/S通信模型介绍
  5. android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...
  6. redis缓存跟数据库数据不一致问题解决
  7. PAT 00-自测1. 打印沙漏(20)
  8. shell脚本实现printf数字转换N位补零
  9. 36.Linux驱动调试-根据oops定位错误代码行
  10. 基本数据类型-集合(set)_上周内容回顾(字符串_数字_列表_元组_字典_集合)
  11. 简单综合案例的统计学方法(总结试验性定量数据分析)
  12. Python自动锁屏--window系统
  13. 北上广深不相信电单车 共享单车终究走向“死“胡同?
  14. 【温故而知新】计算机408之计算机网络速记
  15. Photoshop图层混合算法
  16. 路由器连接路由器设置方法
  17. 超详细面试准备(10分钟打遍所有初级后端开发面试)
  18. 什么是5G承载网?【转载自微信公众号网络技术联盟站】
  19. 更改计算机用户名批处理,修改计算机名批处理
  20. 自动组策略(GPO)备份工具

热门文章

  1. 蓝桥杯2016年第七届JavaC组国赛第一题-平方末尾
  2. Android Spinner设置默认选中的值
  3. Android 自定义View(一)常用属性
  4. linux BufferedImage.createGraphics()卡住不动
  5. 6.字符串截取数据求平均分
  6. 机械表小案例之transform的应用
  7. 《大道至简》第一章读后感(java伪代码)
  8. Python 清理项目的目录
  9. IS-IS和OSPFv2对比
  10. 动态路由之OSPF协议综合实验