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);
            }
    
  • 相关阅读:
    中国移动校园WLAN客户端及使用方法
    Win7 开启upnp服务,直接在网络中设置连接路由设备
    转载:迷你云 – 搭建自己的本地多人团队Dropbox 服务
    JLINK V8固件烧录指导
    实验室网站试运营期间的信息管理
    并非如你想象的那般强大,带你重新认识3D打印
    转:技术宅逆天了!如何从按键音中听出周鸿祎的手机号码
    南大学生破译周鸿祎电话获得互联网大佬青睐
    E430 加装固态硬盘(SSD)参考
    iptables_cacti_nagios
  • 原文地址:https://www.cnblogs.com/darrenji/p/3867577.html
Copyright © 2011-2022 走看看