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);
            }
    
  • 相关阅读:
    2015531 网络攻防 Exp1 PC平台逆向破解(5)M
    2017-2018-1 20155331 嵌入式C语言
    20155330 《网络对抗》 Exp9 web安全基础实践
    20155330 《网络对抗》 Exp8 Web基础
    20155330 《网络对抗》 Exp7 网络欺诈防范
    20155330 《网络对抗》 Exp6 信息搜集与漏洞扫描
    20155330 《网络对抗》 Exp5 MSF基础应用
    20155330 《网络攻防》 Exp4 恶意代码分析
    20155330 《网络攻防》 Exp3 免杀原理与实践
    20155330 《网络对抗》 Exp2 后门原理与实践
  • 原文地址:https://www.cnblogs.com/darrenji/p/3867577.html
Copyright © 2011-2022 走看看