c语言函数调用费波那楔数列,【算法】费波那契数列算法
费波那契数列算法
作者:白宁超
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语言函数调用费波那楔数列,【算法】费波那契数列算法相关推荐
- 面试官问你斐波那契数列的时候不要高兴得太早 搞懂C语言函数指针 搜索引擎还可以这么玩? 那些相见恨晚的搜索技巧...
面试官问你斐波那契数列的时候不要高兴得太早 前言 假如面试官让你编写求斐波那契数列的代码时,是不是心中暗喜?不就是递归么,早就会了.如果真这么想,那就危险了. 递归求斐波那契数列 递归,在数学与计算机 ...
- C语言实现求解斐波那契数列的四种方法及优化处理(递归,迭代,特殊性质公式,矩阵快速幂)
众所周知,斐波那契数列是非常经典的一个数列,它的数学公式如下 为了便于观察,我们列出它的几项:0 1 1 2 3 5 8 13 21...... 下面我们将介绍四种方法来用C语言计算机 ...
- c语言 兔子数列螺线图,经典算法大全51例——2.斐波那契数列(兔子数列)
经典算法大全51例--2.斐波那契数列 算法目录合集 地址 说明 题目 原理分析 代码实现--Java 相关题目其他变形: 1.爬楼梯(来源:力扣LeetCode) 2.兔子成熟期拉长 官方题解 分析 ...
- 利用graphviz模块展示斐波那契数列的递归函数调用图(Python)
在博客动态规划法(一)从斐波那契数列谈起中,在求解斐波那契数列的第n项时,我们采用了递归方法和动态规划法来求解,当然递归方法的效率很差.本文将利用graphviz模块来展示斐波那契数列的递归函数调 ...
- HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)
Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...
- HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Li ...
- hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)
M斐波那契数列 Time Limit: 3000/1 ...
- c++调用cplex求解例子_递归算法的R语言实现 (罗汉塔、九连环、斐波那契数列等问题的求解)...
递归算法用函数来实现,通俗地说就是函数对自身的调用,求解递归问题就转化为函数的调用关系问题.函数f(n)随自变量n的增加而变化,函数的调用关系也就表现为f(n)与f(n-1)或f(n-2)关系的问题. ...
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...
- c语言n次方怎么输入_C语言实现斐波拉契数列
C语言实现斐波拉契数列教程 怎么使用 C 语言实现计算斐波拉契数列的第 N 项的值? C语言实现斐波拉契数列详解 背景知识 斐波那契数列是一组第一位和第二位为 1,从第三位开始,后一位是前两位和的一组 ...
最新文章
- C语言 条件编译详解
- hapRroxy 安装配置详解
- 使用phpstorm+wamp实现php代码实时调试审计
- C/S通信模型与B/S通信模型介绍
- android中资源文件的两种访问方式,Android_Android学习笔记-保存文件(Saving Files),Android设备有两种文件存储区域 - phpStudy...
- redis缓存跟数据库数据不一致问题解决
- PAT 00-自测1. 打印沙漏(20)
- shell脚本实现printf数字转换N位补零
- 36.Linux驱动调试-根据oops定位错误代码行
- 基本数据类型-集合(set)_上周内容回顾(字符串_数字_列表_元组_字典_集合)
- 简单综合案例的统计学方法(总结试验性定量数据分析)
- Python自动锁屏--window系统
- 北上广深不相信电单车 共享单车终究走向“死“胡同?
- 【温故而知新】计算机408之计算机网络速记
- Photoshop图层混合算法
- 路由器连接路由器设置方法
- 超详细面试准备(10分钟打遍所有初级后端开发面试)
- 什么是5G承载网?【转载自微信公众号网络技术联盟站】
- 更改计算机用户名批处理,修改计算机名批处理
- 自动组策略(GPO)备份工具