c#斐波那契数列(Fibonacci)(递归,非递归)实现代码

yizhihongxing

C#中可以使用递归和非递归两种方式实现斐波那契数列。

一、递归实现代码

递归实现斐波那契数列比较简单,代码如下:

public static int Fibonacci_Recursive(int n)
{
    if (n <= 0)
    {
        return 0;
    }

    if (n == 1 || n == 2)
    {
        return 1;
    }

    return Fibonacci_Recursive(n - 1) + Fibonacci_Recursive(n - 2);
}

其中,参数n表示第n个斐波那契数。当n<=0时,返回0;当n=1或n=2时,返回1;否则返回前两项相加的值。

递归实现代码比较简单,但是递归深度很容易超过系统默认值,导致堆栈溢出。因此,当n比较大时,建议使用非递归实现方式。

二、非递归实现代码

非递归实现斐波那契数列需要用到循环,代码如下:

public static int Fibonacci_NonRecursive(int n)
{
    if (n <= 0)
    {
        return 0;
    }

    if (n == 1 || n == 2)
    {
        return 1;
    }

    int a = 1;
    int b = 1;
    int sum = 0;
    for (int i = 3; i <= n; i++)
    {
        sum = a + b;
        a = b;
        b = sum;
    }

    return sum;
}

其中,参数n表示第n个斐波那契数。当n<=0时,返回0;当n=1或n=2时,返回1;否则通过循环求出第n个斐波那契数。

注意,循环从第三项开始,需要先计算第三项,并将a和b的值更新为第二项和第三项,依次类推,直到计算出第n项。

下面通过两个例子来说明:

例子一

输入3,期望输出2,调用代码如下:

int result = Fibonacci_Recursive(3);
Console.WriteLine(result);

输出结果为2,符合期望。

例子二

输入6,期望输出8,调用代码如下:

int result = Fibonacci_NonRecursive(6);
Console.WriteLine(result);

输出结果为8,符合期望。

以上就是C#斐波那契数列的实现代码攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#斐波那契数列(Fibonacci)(递归,非递归)实现代码 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#中timer定时器用法实例

    C#中timer定时器用法实例 简介 C#中的timer定时器用于在指定时间间隔内重复执行某些代码,非常常用。下面将详细讲解timer的用法以及两个实例。 用法 C#中的timer定时器主要分为两种:System.Threading.Timer和System.Timers.Timer。这两种timer主要的区别是使用方式不同。下面分别进行介绍。 System…

    C# 2023年6月1日
    00
  • C#中判断、验证字符串是否为日期格式的实现代码

    在C#中判断验证字符串是否为日期格式,我们可以使用DateTime.TryParseExact()方法或DateTime.TryParse()方法进行实现。 DateTime.TryParseExact()方法 该方法可以指定字符串的日期时间格式进行验证,如果能够被转换成DateTime类型,返回值为true,否则为false。 示例一 以下代码演示了输入日…

    C# 2023年6月1日
    00
  • C#新手常犯的错误汇总

    C#新手常犯的错误汇总 前言 C#作为一门流行的编程语言,吸引了很多新手程序员的青睐。但是,在学习和练习过程中,新手程序员常常会犯一些错误。本文将总结并详细讲解C#新手程序员常犯的错误,并提供完整的解决方案。 1. 变量的生命周期不清楚 在C#中,变量的生命周期是很重要的一个概念。如果不清楚变量的生命周期,可能会导致程序出现奇怪的问题。 错误示例 publi…

    C# 2023年5月15日
    00
  • WinForm使用DecExpress控件中的ChartControl插件绘制图表

    WinForm使用DevExpress控件中的ChartControl插件绘制图表的攻略可以分为以下几个步骤: 获取Devexpress控件和ChartControl插件首先需要去Devexpress官网下载控件和ChartControl插件,下载完成后可以进行安装和注册,然后在我们的WinForm应用程序中添加控件引用。 添加ChartControl控件到…

    C# 2023年6月1日
    00
  • c#和avascript加解密之间的互转代码分享

    下面是详细的“c#和Javascript加解密之间的互转代码分享”的完整攻略。 什么是加解密? 加密是将明文转换成密文的过程,解密是将密文转换成明文的过程。这种加解密的过程是为了保证信息的安全性,防止敏感信息被窃听。 c#和Javascript加解密 在c#和Javascript中,通常使用对称加密算法和非对称加密算法进行加密和解密。 对称加密算法:使用同一…

    C# 2023年6月7日
    00
  • asp.net中JavaScript数据验证实现代码

    下面是asp.net中JavaScript数据验证实现代码的完整攻略: 1. 前提条件 在开始编写JavaScript数据验证实现代码之前,需要确保具备以下条件:- 熟悉HTML和JavaScript编程语言- 掌握ASP.NET Webform开发技能- 了解ASP.NET Webform中JavaScript的基本运用 2. 步骤解析 2.1. 创建一个…

    C# 2023年5月31日
    00
  • C#实现拼图游戏

    C#实现拼图游戏攻略 简介 拼图游戏是一种常见的益智休闲游戏,游戏的目标是通过调换图块的位置,将一张被分割成若干小块的图片恢复原样。在本攻略中,我们将使用C#语言实现一个简单的拼图游戏。 实现步骤 第一步:准备工作 在开始实现之前,需要准备以下工作: 下载安装Visual Studio开发环境。 下载准备好的游戏所需的图片资源。 第二步:创建项目并导入资源 …

    C# 2023年6月1日
    00
  • ASP.NET Core Api网关Ocelot的使用初探

    下面是“ASP.NET Core Api网关Ocelot的使用初探”的完整攻略: 什么是ASP.NET Core Api网关Ocelot? ASP.NET Core Api网关Ocelot是一个开源的API网关,用于管理和路由HTTP请求。它提供了一组API和UI组件,用于配置和管理API网关,包括路由、认证、授权、限流、缓存等方面。 如何使用ASP.NET…

    C# 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部