zoukankan      html  css  js  c++  java
  • 递归实现阶乘

    如果想实现一个阶乘,比如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);
            }
    
  • 相关阅读:
    IIS 您要访问的网页有问题,无法显示!
    windows系统添加删除用户命令!
    ASP跨域调用Webservices方法
    ASP 编码转换(乱码问题解决)
    Jquery控制滚动显示欢迎字幕v2
    iframe框架嵌套技巧(全屏,去双滚动条)
    ASP CDONTS.NEWMAIL组件发送电邮(附下载)
    ASP FORM表单提交判断
    使用js代码将HTML Table导出为Excel
    获得第二大的元素
  • 原文地址:https://www.cnblogs.com/darrenji/p/3867577.html
Copyright © 2011-2022 走看看