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过大时,递归 ...
随机推荐
- SpringBoot电商项目实战 — 商品的SPU/SKU实现
最近事情有点多,所以系列文章已停止好多天了.今天我们继续Springboot电商项目实战系列文章.到目前为止,整个项目的架构和基础服务已经全部实现,分布式锁也已经讲过了.那么,现在应该到数据库设计及代 ...
- PWN INTEGER OVERFLOW 整数溢出
0x00 Preview Last few passage I didn't conclude some important points and a general direction o ...
- PDF提取表格的网页工具——Excalibur
在之前的文章另类爬虫:从PDF文件中爬取表格数据中,我们知道如何利用Python的camelot模块,通过写Python程序来提取PDF中的表格数据.本文我们将学习如何用更便捷的工具从PDF中提取 ...
- STT-MRMA技术优点
到目前为止,设计人员可以使用的存储技术是易变的,这意味着在断电后,存储器中的数据内容会丢失.但是,随着Everspin Technologies推出256Mb STT-MRAM,系统现在可以拥有像DR ...
- Python、 Pycharm、Django安装详细教程(图文)
前言 这篇文章主要介绍了Python. Pycharm.Django安装详细教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. ...
- Android BGradualProgress 多种渐变、直角or弧角、进度条、加载条
可实现多种渐变.直角or弧角.进度条.加载条 (Various gradient, right or arc angle, progress bar and loading bar can be re ...
- 商业分析BA:用户故事怎么拆?
什么是User Story其实我觉得要对User Story做一个定义还是挺难的.曾经的我以为,所谓User Story是User来讲述的Story.你看啊,User Story的编写范式:As a ...
- 二、计算机数据表示&&校验码(简单了解)
一.数据表示 机器数:各种数值在计算机中的表示形式.其特点是采用二进制计数器,数的符号用0和1标识,小数点则隐含,表示不占位置.机器数分为带符号数和无符号数.无符号数称为正数. 比如,十进制中的数 + ...
- Spring Boot常用注解和原理整理
一.启动注解 @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documen ...
- 关于华为模拟器eNSP-防火墙USG6000V怎么重装镜像
一.首先关闭eNSP软件 二.打开Oracle VM VirtualBox 三.单击VirtualBox “管理 - 虚拟介质管理”,将vfw_usg.vdi下面的子链接释放然后删除 四.最后回到主界 ...