C#采用递归实现阶乘的方法
作者:shichen2014 发布时间:2022-12-09 09:24:56
标签: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);
}
希望本文所述实例对学习算法的朋友能有所帮助。


猜你喜欢
- 注解注解定义Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变
- 前言:2022年Java将有什么新的特性和改进,我相信很多Java开发者都想知道。结合Java语言架构师布莱恩·格茨(
- 前言现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependenc
- asp.net页面中如何获取Excel表的内容,具体内容介绍如下所示:首先引用组件和命名空间using Microsoft.Office.I
- 在Android N上并没有提供直接的方法获取外置SD卡或挂载U盘路径,可以通过下面方法获取内置sd卡路径Environment.getEx
- DSA数字签名,供大家参考,具体内容如下一、实验目的在掌握了ElGamal和Schorr数字签名算法的基础上,进一步地学习和掌握DSA签名算
- Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同
- int、String的类型转换int -> Stringint i=12345;String s="";第一种方法
- 一、包含与删除两种方法解析1.boolean contains(Object o);判断集合中是否包含某个元素。package com.bj
- 本文所需的数据库初始文件,Hibernate常用操作的完整示例代码(包含所有Hibernate操作所需jar文件)提供下载学习:http:/
- 如何在原有日期时间上加几个月或几天在原有的时间上添加几个月SimpleDateFormat df = new SimpleDateForma
- yaml介绍YAML(YAML Ain't Markup Language),一种数据序列化格式优点:容易阅读容易与脚本语言交互以数
- 前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时
- Metro UI For JavaFX!这是一个Windows设计风格的UI库,使用非常简单,只要一行代码就可以实现整体UI风格的替换!ne
- 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,如下图所示生产者向空间里存放数据,而消费者取用数据
- java 线程池详解什么是线程池?提供一组线程资源用来复用线程资源的一个池子为什么要用线程池?线程的资源是有限的,当处理一组业务的时候,我们
- 前言上一篇分析了事务注解的解析过程,本质上是将事务封装为切面加入到AOP的执行链中,因此会调用到MethodInceptor的实现类的inv
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 有时候你希望在一个嵌套循环的外层循环中执行Continue操作。例如,假设你有一连串的标准,和一堆items。并且你希望找到一个符合每个标准
- 一、几句话使用Gradle及其推荐的项目框架把密码等敏感数据放入gradle.properties不要自己写Http客户端,使用Volley