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日

相关文章

  • ASP.NET Core 6.0 基于模型验证的数据验证功能

    下面我将为您介绍ASP.NET Core 6.0基于模型验证的数据验证功能的详细攻略。 1. 简介 ASP.NET Core 6.0 基于模型验证的数据验证功能旨在帮助开发人员验证用户提交的数据以确保数据的准确性和安全性。它可以通过将验证规则添加到模型中来实现这一目标,并在模型绑定期间对数据进行验证。 2. 添加验证规则 要在 ASP.NET Core 6.…

    C# 2023年6月3日
    00
  • C#中WPF使用多线程调用窗体组件的方法

    我们来详细讲解一下C#中WPF使用多线程调用窗体组件的方法。 首先我们需要了解一下WPF界面的线程模型,WPF应用程序拥有一个主UI线程,它负责处理用户交互事件和UI组件的更新。如果在主UI线程之外的任何线程(如后台线程)中访问UI控件,就会触发“跨线程访问无效”的异常。因此,我们需要使用一些技术手段来跨线程调用UI组件。 方法1:使用Dispatcher.…

    C# 2023年6月7日
    00
  • 解析C#设计模式之单例模式

    我来给您讲解一下“解析C#设计模式之单例模式”的完整攻略。 一、什么是单例模式? 单例模式是一种常用的设计模式,它保证了一个类只能有一个实例,并提供一个全局访问点。 二、为什么要使用单例模式? 在很多场景中,我们需要保证某个类只拥有一个实例。比如唯一的数据库连接池、全局的日志对象等等。如果没有单例模式,我们每次都需要手动控制实例数量,这会带来很多问题。 三、…

    C# 2023年5月31日
    00
  • C#窗口实现单例模式的方法

    实现单例模式的目的是确保在系统中只有一个实例可以被创建和访问。C#语言针对这个问题提供了多种解决方案,其中窗口实现单例模式的方法是一种常用的方式。 实现方法 方案一:静态实例 在C#中,使用静态字段来保存唯一一个实例,确保这个实例可以被共享。同时为了限制实例化次数,将构造函数修饰为私有的。 示例代码: public class SingletonWindow…

    C# 2023年6月6日
    00
  • C#基于简单工厂模式实现的计算器功能示例

    C#基于简单工厂模式实现的计算器功能示例 概述 本文将介绍如何基于简单工厂模式实现一个计算器功能的示例。我们会通过编写C#代码来实现一个简单的计算器,能够支持加、减、乘、除四种运算。 简单工厂模式 在讲解示例之前,我们先来了解一下简单工厂模式。简单工厂模式是一种创建型设计模式,它提供了一个工厂方法来创建对象。这种模式可以被认为是实现了基本的对象创建的代码复用…

    C# 2023年6月7日
    00
  • C# 动态加载程序集信息

    C# 动态加载程序集信息是指在程序运行中,动态地从文件系统或网络中加载程序集信息,然后使用反射技术获取程序集中的类型信息并进行调用。这种动态加载程序集信息的方法通常用于实现插件式架构、程序集延迟加载等功能。 实现C# 动态加载程序集信息的步骤如下: 加载程序集 使用Assembly.Load方法,可以从文件系统或网络中加载程序集。如下面的代码: Assemb…

    C# 2023年6月1日
    00
  • c# 图片加密解密的实例代码

    c# 图片加密解密是一种通过对图片进行加密操作来保障图片内容安全的方法。下面我们将提供一份完整的攻略,介绍如何使用c#实现图片加密解密。 准备工作 在开始之前,我们需要先下载并安装c#运行环境,常用的c#开发环境有Visual Studio和Visual Studio Code。本攻略将使用Visual Studio 2019作为开发环境。 实现过程 图片加…

    C# 2023年6月8日
    00
  • C#多线程系列之资源池限制

    C#多线程系列之资源池限制 背景介绍 在C#多线程编程中,经常需要对某些资源进行限制,例如同时只能有一定数量的线程使用某一资源,这时我们可以使用资源池技术来实现。 资源池的实现 资源池的实现原理比较简单,主要包括三个步骤: 初始化资源池,将所有可用资源放入资源池中; 线程从资源池中获取资源,使用资源; 使用完成后,线程将资源放回资源池。 基于上述原理,我们可…

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