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

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# 实现FTP上传资料的示例

    C# 实现FTP上传资料的示例 在 C# 中,我们可以使用 FtpWebRequest 类实现文件的上传和下载操作。下面我将详细讲解如何使用 FtpWebRequest 类实现 FTP 上传资料的示例。 步骤 以下是 C# 实现 FTP 上传资料的步骤: 创建 FtpWebRequest 对象,设置 FTP 服务器的地址、用户名、密码和操作类型(上传或下载等…

    C# 2023年6月1日
    00
  • 实例代码讲解c# 线程(下)

    让我来详细讲解一下“实例代码讲解c# 线程(下)”的完整攻略。 1. 标题说明 本篇文章主要是针对C#线程相关知识进行讲解,并通过实例的方式来进行代码演示,包含线程同步、线程异步、线程池等内容。 2. 线程同步 线程同步是指多个线程在操作共享资源时,需要通过某种机制来保证数据的正确性。在C#中,常用的同步机制有锁机制和Monitor机制。 2.1 锁机制 p…

    C# 2023年5月31日
    00
  • c#通过app.manifest使程序以管理员身份运行

    下面是详细讲解“c#通过app.manifest使程序以管理员身份运行”的完整攻略: 1. 为何需要以管理员身份运行程序 在Windows系统中,一些操作需要管理员权限才能够执行,例如修改系统配置、创建和删除文件夹等等。对于这些需要管理员权限的操作,我们需要以管理员身份运行程序才能够正常执行。 2. 如何使用app.manifest来使程序以管理员身份运行 …

    C# 2023年6月1日
    00
  • c# Parallel类的使用

    c#Parallel类的使用 C# 的 Parallel 类中提供了一些并行程序执行的方法,这些方法可以在多核处理器中充分发挥性能,提高程序的运行速度。下面将详细讲解 Parallel 类的使用。 Parallel.ForEach 方法 Parallel.ForEach 方法用来遍历一个集合,并把集合中的每个元素分配到不同的线程中去执行,以实现并行处理。以下…

    C# 2023年5月15日
    00
  • 详解如何在ASP.NET Core中使用Route特性

    详解如何在ASP.NET Core中使用Route特性 在ASP.NET Core中,Route特性是一种常用的路由技术,它可以帮助我们定义URL模式,将请求映射到相应的控制器和操作方法。本攻略将介绍如何在ASP.NET Core中使用Route特性,并提供两个示例说明。 使用Route特性 在ASP.NET Core中,我们可以使用Route特性来定义UR…

    C# 2023年5月17日
    00
  • ASP.NET中ListView(列表视图)的使用前台绑定附源码

    下面我将为您讲解如何在ASP.NET中使用ListView控件进行列表视图的展示,以及如何在前台绑定数据和附源码。 一、什么是ListView控件 ListView控件是ASP.NET Web应用程序中用于呈现数据列表的一种控件,它可以使用模板来定制呈现方式,提供了更丰富的数据呈现方式,比如表格、列表、瓷砖等。 二、ListView控件的使用方法 1. 新建…

    C# 2023年6月3日
    00
  • c# 实现的支付宝支付

    以下是详细的“c# 实现的支付宝支付”的完整攻略: 一、创建支付宝开发者账号 在使用支付宝支付之前,我们需要先注册一个支付宝开发者账号。注册完成后,登录 支付宝开放平台 点击“开发文档”,选择“支付宝支付”,然后就可以获得相关的开发文档。 二、开通支付宝支付 开发者账号注册完成后需要开通支付宝支付,并获取 appid、private_key 等信息。 三、引…

    C# 2023年6月6日
    00
  • asp.net 数字签名实例代码

    为了实现数字签名,我们需要使用ASP.NET自带的RSACryptoServiceProvider类。该类可以生成密钥对,对消息进行数字签名,以及验证数字签名。下面是实现数字签名的详细步骤: 步骤一:生成密钥对 首先,我们需要生成一个RSA密钥对,用于数字签名。我们可以使用以下代码生成密钥对: // 创建一个RSA实例 using (var rsa = ne…

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