C#采用递归实现阶乘的方法

 更新时间:2014年08月20日 10:59:14   投稿:shichen2014  
这篇文章主要介绍了C#采用递归实现阶乘的方法,很有借鉴价值的一个算法技巧,需要的朋友可以参考下

本文实例讲述了C#采用递归实现阶乘的方法,供大家参考之用。通常来说,如果想实现一个阶乘,比如6 * 5 * 4 * 3 * 2 * 1,首先想到的可能是循环遍历。

如下示例所示:

class Program
{
    static void Main(string[] args)
    {
      Console.WriteLine("请输入一个数");
      int number = Convert.ToInt32(Console.ReadLine());
      double result = JieCheng(number);
      Console.WriteLine(number.ToString() + "的阶乘结果是:" + result.ToString());
      Console.ReadKey();
    }
 
    public static double JieCheng(int number)
    {
      if (number == 0)
      {
        return 0;
      }
 
      //初始值必须设置为1
      double result = 1;
 
      for (int i = number; i >= 1; i--)
      {
        result = result*i;
      }
      return result;
    }
}

但以上的阶乘还有一种实现方式:6 * (6-1) * (6-2) * (6-3) * (6-4) * (6-5) 或 6 * (6-1) * (5-1) * (4-1) * (3-1) * (2-1),也就是说后面数总是由前面的数减1得到的。

当实现的逻辑相同,且内部递归方法的参数可以由外部递归方法的参数,经过某种算法而获得,这正是递归登场的时候。

实现代码如下:

public static double JieCheng(int number)
{
  if (number == 0)
  {
 return 1;
  }

  return number * JieCheng(number - 1);
}

希望本文所述实例对学习算法的朋友能有所帮助。

相关文章

  • Unity实现OCR文字识别功能

    Unity实现OCR文字识别功能

    这篇文章主要介绍了通过Unity接入百度AI接口,实现OCR文字识别功能,文中的实现步骤讲解详细,对我们学习或工作有一定的参考价值,需要的可以了解一下
    2022-01-01
  • 关于C#生成MongoDB中ObjectId的实现方法

    关于C#生成MongoDB中ObjectId的实现方法

    本篇文章小编为大家介绍,关于C#生成MongoDB中ObjectId的实现方法。需要的朋友参考下
    2013-04-04
  • C#中DataTable实现行列转换的方法

    C#中DataTable实现行列转换的方法

    这篇文章主要介绍了C#中DataTable实现行列转换的方法,实例分析了C#操作DataTable的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • C#实现将数组内元素打乱顺序的方法

    C#实现将数组内元素打乱顺序的方法

    这篇文章主要介绍了C#实现将数组内元素打乱顺序的方法,涉及C#数组遍历及随机数操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • C++中const的实现细节介绍(C,C#同理)

    C++中const的实现细节介绍(C,C#同理)

    本篇文章主要是对C++中const的实现细节进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • Unity使用LineRender实现绘画功能

    Unity使用LineRender实现绘画功能

    这篇文章主要为大家详细介绍了Unity使用LineRender实现绘画功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • C# 使用AspriseOCR.dll实现验证码识别

    C# 使用AspriseOCR.dll实现验证码识别

    这篇文章主要介绍了C# 使用AspriseOCR.dll实现验证码识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 利用thrift实现js与C#通讯的实例代码

    利用thrift实现js与C#通讯的实例代码

    利用thrift实现js与C#通讯的实例代码,需要的朋友可以参考一下
    2013-04-04
  • C#清除WebBrowser中Cookie缓存的方法

    C#清除WebBrowser中Cookie缓存的方法

    这篇文章主要介绍了C#清除WebBrowser中Cookie缓存的方法,涉及C#针对WebBrowser控件的操作技巧,非常简单实用,需要的朋友可以参考下
    2016-05-05
  • c#基础系列之ref和out的深入理解

    c#基础系列之ref和out的深入理解

    有过C#基础知识的都应该清楚Ref和Out的使用方法,所以下面这篇文章主要给大家介绍了关于c#基础系列之ref和out的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09

最新评论