课堂小结5.4 阶乘的循环和递归实现

m和n通过键盘输入,求出表达式:(n!)/((n-m)!*m!)的值。要求用两种不同的方法完成:第一种是利用for循环求出表达式的值;第二种在主方法中调用自定义求阶乘方法fac()实现。

namespace _4
{
    class Program
    {
        static void Main(string[] args)
        {
            int m = Int32.Parse(Console.ReadLine());
            int n = Int32.Parse(Console.ReadLine());
            int fac1 = 1;
            int fac2 = 1;
            int fac3=1;
            int fac11 =fac(m);//方法2:递归
            int fac22 = fac(n);
            int fac33 = fac(n-m);
            
            for (int i = 1; i <= m; i++)//方法1:循环
            {
                fac1 *= i;//m的阶乘
            }
            for (int i = 1; i <= n; i++)
            {
                fac2 *= i;//n的阶乘
            }
            for(int i=1;i<(n-m);i++)
            {
                fac3*=i;//n-m的阶乘
            }
            
            
            Console.WriteLine("(n!)/((n-m)!*m!)");
            Console.WriteLine("way1");
            Console.WriteLine("fac1={0} fac2={1}", fac1, fac2);//方法一
            Console.WriteLine("{0}/({1}*{2}) = {3}", fac2, fac3, fac1,fac2/(fac3*fac1));
            Console.WriteLine("way2");
            Console.WriteLine("fac1={0} fac2={1}", fac11, fac22);//方法二
            Console.WriteLine("{0}/({1}*{2}) = {3}", fac22, fac33, fac11, fac22 / (fac33 * fac11));
        }
        static int fac(int n)
        {
            if (n == 1)
                return 1;
            else
                return fac(n - 1) * n;

        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42265608/article/details/89390479