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日

相关文章

  • 符合标准的js对联广告

    下面是关于“符合标准的js对联广告”的完整攻略。 什么是对联广告 对联广告是网站广告形式之一,通常出现在网页的左右两侧。对联广告通常由两个广告单元组成,它们在同一水平线上,并且左右相对称。 什么是符合标准的js对联广告 符合标准的js对联广告需要满足以下要求: 左右两侧的广告单元大小要相等。 广告单元要在同一水平线上。 左右两侧的广告单元需要有统一的div …

    C# 2023年5月31日
    00
  • 为Xamarin.Forms的导航栏增加搜索功能

    为 Xamarin.Forms 的导航栏增加搜索功能攻略 在 Xamarin.Forms 中,可以为导航栏增加搜索功能,以便用户可以快速查找所需的内容。本攻略将介绍如何为 Xamarin.Forms 的导航栏增加搜索功能。 步骤 步骤1:创建搜索页 首先,需要创建一个搜索页,以便用户可以在其中输入搜索关键字。可以使用以下代码创建一个名为 SearchPage…

    C# 2023年5月17日
    00
  • C# 线程相关知识总结

    C#线程相关知识总结 在C#语言中,线程是一种轻量级的执行单元,它可以独立执行代码,并与其他线程并发执行。线程可以简化编程过程,提高程序的效率。在本篇文章中,我们将总结C#线程的相关知识。 线程的基本概念 程序和进程的概念 在介绍线程之前,我们需要先了解程序和进程的概念。程序是指可执行文件,是CPU可以直接执行的二进制代码;而进程是指正在运行的程序的一个实例…

    C# 2023年5月15日
    00
  • Win Form 的 Splitter 使用心得与技巧

    Win Form 中的 Splitter 控件可以很方便地实现分割窗口的效果,常用于界面布局、调整窗口尺寸等场景。在使用 Splitter 过程中,我们可以注意以下几点心得与技巧。 界面布局 当我们需要在一个窗口中分割出两个或多个区域时,可以使用 Splitter 控件。首先在窗口上放置一个 Splitter 控件,并将 Dock 属性设置为 Left、Ri…

    C# 2023年6月7日
    00
  • asp.net neatUpload 支持大文件上传组件

    ASP.NET NeatUpload是一个用于实现大文件上传的组件,它支持各种文件上传场景,并提供了丰富的API以适应不同的需求。下面将详细讲解如何使用该组件实现大文件上传的完整攻略。 1. 安装和配置 首先需要将NeatUpload组件添加到项目中。可使用NuGet安装或者手动下载添加。 Nuget安装: Install-Package NeatUploa…

    C# 2023年6月1日
    00
  • C#的加密与解密

    C#的加密与解密 C#提供了多种加密与解密方式,常见的有对称加密、非对称加密和哈希算法。 对称加密 对称加密即使用相同的密钥进行加密和解密。常见的对称加密算法有DES、AES等。 示例代码: using System.Security.Cryptography; using System.Text; public static string Encrypt(…

    C# 2023年6月1日
    00
  • .NET 6开发TodoList应用实现结构搭建

    下面是详细讲解“.NET 6开发TodoList应用实现结构搭建”的完整攻略。 1. 概述 在本教程中,我们将使用.NET 6和C#构建一个简单的ToDoList应用程序。这个应用程序将包括一个基本的用户界面,允许用户创建、修改和删除待办任务。 我们将使用ASP.NET Core MVC框架来构建TodoList应用程序,并将其连接到一个SQLite数据库。…

    C# 2023年6月3日
    00
  • layui实现显示数据表格、搜索和修改功能示例

    以下是将layui用于显示数据表格、搜索和修改功能的完整攻略。 前置条件 首先你需要安装layui包,你可以从layui官网下载或使用CDN链接 引入layui.js和layui.css文件 显示数据表格 这是一个基于layui table模块的示例。下面是一个基本的HTML结构,它定义了一个table和一个div包含分页: <table id=&qu…

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