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);
            }
    
  • 相关阅读:
    OpenCV中的绘图函数
    整理不错的opencv博客
    opencv中的函数
    这是一个学习前端技术的网站
    HDU1520 Anniversary party(树形DP入门)
    CF1255C League of Leesins(图论)
    HDU4725 The Shortest Path in Nya Graph(最短路分层)
    1288C Two Arrays
    CF1294D MEX maxiszing
    CF1295C Obtain the String
  • 原文地址:https://www.cnblogs.com/darrenji/p/3867577.html
Copyright © 2011-2022 走看看