C#斐波那契数列求法(比较阶乘和循环所用时间)
using System; namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
Console.Write("你要输入多少项?");
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine();
DateTime dt1 = System.DateTime.Now;
for (int i = ; i <= a; i++)
{
Console.Write("\t{0}", J(i));
if (i % == )
{
Console.WriteLine();
}
}
DateTime dt2 = System.DateTime.Now;
TimeSpan ts = dt2.Subtract(dt1);
Console.WriteLine("3变量循环方法用时{0}", ts.TotalMilliseconds);//3变量循环方法所用时间 DateTime dt11 = System.DateTime.Now;
for (int i = ; i <= a; i++)
{
Console.Write("\t{0}", J1(i));
if (i % == )
{
Console.WriteLine();
}
}
DateTime dt22 = System.DateTime.Now;
TimeSpan ts1 = dt22.Subtract(dt11);
Console.WriteLine("2变量循环方法用时{0}", ts1.TotalMilliseconds);//2变量循环方法所用时间 DateTime dt111 = System.DateTime.Now;
for (int i = ; i <= a; i++)
{
Console.Write("\t{0}", J2(i));
if (i % == )
{
Console.WriteLine();
}
}
DateTime dt222 = System.DateTime.Now;
TimeSpan ts11 = dt222.Subtract(dt111);
Console.WriteLine("递归方法用时{0}", ts11.TotalMilliseconds);//递归方法所用时间
}
/// <summary>
/// 3个变量循环求斐波那契数列
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
static int J(int b)
{
int x = ;
int y = ;
if (b == || b == )
{
return ;
}
else
{
for (int i = ; i <= b; i++)
{
int z = x + y;
y = x;
x = z;
}
return x;
}
}
/// <summary>
/// 2个变量循环求斐波那契数列
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
static int J1(int b)
{
int x = ;
int y = ;
if (b == || b == )
{
return ;
}
else
{
for (int i = ; i <= b; i++)
{
y = x + y;
x = y-x;
}
return y;
}
} /// <summary>
/// 阶乘求斐波那契数列
/// </summary>
/// <param name="b"></param>
/// <returns></returns>
static int J2(int b)
{
if (b == || b == )
{
return ;
}
else
{
return J2(b - ) + J2(b - );
}
}
}
}
C#斐波那契数列求法(比较阶乘和循环所用时间)的更多相关文章
- 剑指offer【07】- 斐波那契数列(java)
题目:斐波那契数列 考点:递归和循环 题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0),n<=39. 法一:递归法,不过递归比较慢, ...
- 求斐波那契数列的第n项
问题描述:斐波那契数列是这样的一个数列,1,1,2,3,5,8,..,即前两项都是1,后面每一项都是其前面两项的和. 现在要你求出该数列的第n项. 分析:该问题是一个经典的数列问题,相信大家在很多语言 ...
- hdu4549 M斐波那契数列 矩阵快速幂+快速幂
M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = aF[1] = bF[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的 ...
- PHP斐波那契数列
一个斐波那契数列的求法 1 1 2 3 5 8 13 21 34 55 要求写出算法 //数组法 function test($num){ $arr=[]; for($i=0;$i<=$nu ...
- C#求斐波那契数列第30项的值(递归和非递归)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 斐波拉契数列加强版——时间复杂度O(1),空间复杂度O(1)
对于斐波拉契经典问题,我们都非常熟悉,通过递推公式F(n) = F(n - ) + F(n - ),我们可以在线性时间内求出第n项F(n),现在考虑斐波拉契的加强版,我们要求的项数n的范围为int范围 ...
- js中的斐波那契数列法
//斐波那契数列:1,2,3,5,8,13…… //从第3个起的第n个等于前两个之和 //解法1: var n1 = 1,n2 = 2; for(var i=3;i<101;i++){ var ...
- 剑指Offer面试题:8.斐波那契数列
一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时 ...
- 算法: 斐波那契数列C/C++实现
斐波那契数列: 1,1,2,3,5,8,13,21,34,.... //求斐波那契数列第n项的值 //1,1,2,3,5,8,13,21,34... //1.递归: //缺点:当n过大时,递归 ...
随机推荐
- CCF-CSP题解 201812-4 数据中心
题目要求最长边最小的生成树.好吧,这就是一道kruskal MST题. #include <bits/stdc++.h> const int maxn = 50000; const int ...
- SpringMVC深入浅出(一)
1.Springmvc是什么 是一个表现层框架,用于接受请求及参数,响应请求回显数据. 2.SpringMVC处理流程 SpringMVC流程 1. 用户发送请求至前端控制器DispatcherSe ...
- 《Javascript设计模式与开发实践》--读书笔记
第2章 this call apply bind()方法创建一个新的函数,在bind()被调用时,这个新函数的this被bind的第一个参数指定,其余的参数将作为新函数的参数供调用时使用. bind( ...
- IJKPlayerView设置Header播放视频的方法
播放b站视频连接的实测图 https://github.com/Rukey7/IjkPlayerView 使用库的连接 在用这个库播放b站视频连接的时候总是播放不了 检查了一下是因为b站视频连接需要验 ...
- 在Mac上Python多版本切换
1.安装Homebrewhttps://brew.sh/index_zh-cn.html 2.通过brew安装pyenv1)命令行输入:$ brew install pyenv(如果一直卡在Updat ...
- 松软科技Web课堂:JavaScript 类型转换
Number() 转换数值,String() 转换字符串,Boolean() 转换布尔值. JavaScript 数据类型 JavaScript 中有五种可包含值的数据类型: 字符串(string) ...
- 「STM32 」IIC通讯原理及其实验
I2C两线式串行总线通讯协议,它是由飞利浦开发的,主要用于连接微控制器及其外围设备之间,它是由数据线SDA和信号线SCL构成的,可发送和接收数据即在MUC和I2C设备之间,I2C和I2C之间进行全双工 ...
- mariadb 学习笔记
安装:yum install mariadb-server mariadb vim /etc/my.cnf.d/server.cnfinnodb_file_per_table = on#设置后当创建数 ...
- Unity 依赖注入容器的AOP扩展
使用EntLib\PIAB Unity 实现动态代理 using System; using Unity; using Unity.Interception; using Unity.Intercep ...
- jvm虚拟机笔记<三> 类文件结构与类加载机制
java虚拟机具有语言无关系,它只和“class文件“这种特定的二进制文件格式绑定. 不同语言的编译器将对应的程序编译成字节码文件(*.class),送给jvm执行. class文件本质上就是一张表, ...