C#递归阶乘和循环

递归–传递(参数) 回归(返回值) //在方法体里面调用自己 ,引用自己 有一个终止条件 。
在这里插入图片描述
注意:递归必须有终止条件,否则就形成死循环

static void Main()
    {
        int intResult;
        int intResultf;

        UsingRecursive myURec = new UsingRecursive();//创建自己的类对象,调用自己里面的方法。

        intResult = myURec.DoFactorial(6);//调用递归的方法,1*2*3*4*5*6
        intResultf = myURec.DoFactorialF(6);//条用普通循环的方法。

        Console.WriteLine("数值6 的阶乘等于{0} (递归)", intResult);//输出显示结果
        Console.WriteLine("数值6 的阶乘等于{0} (循环)", intResultf);//输出显示结果
        Console.ReadLine();
}
阶乘是小于某个数的所有正整数的乘积。
//数值6 的阶乘等于{0} (递归)    
int DoFactorial(int PF)//(PF=6)
    {
        Console.WriteLine("厉害了,我的递:" + PF);//显示“当前”/这次运行的方法的pF参数的值
        if (PF == 1)//如果这次pf参数的值等于1
        {
            Console.WriteLine("此次result变量的值为:" + 1);
            return 1;//此次运行的值等于1,上层的运算就会等于1X2=2.
        }
        int result = DoFactorial(PF - 1) * PF;

        Console.WriteLine("厉害了,我的递:" + PF);//和上面是一模一样的代码   //务必将这行代码取消注释,运行看结果
        Console.WriteLine("厉害了,我的g:" + result);//返回此次运行根据当前的参数值的结果的值
        return result;
}

    //数值6 的阶乘等于{0} (循环)
    int DoFactorialF(int pF)//(PF=10)
    {
        int result = 1;

        for(int i =0; i < pF; i++)
        {
            result = result * (i+1);// result *= i;累积
        }
        return result;
    }

}

输出结果:
厉害了,我的递:6
厉害了,我的递:5
厉害了,我的递:4
厉害了,我的递:3
厉害了,我的递:2
厉害了,我的递:1
此次result变量的值为:1
厉害了,我的递:2
厉害了,我的g:2
厉害了,我的递:3
厉害了,我的g:6
厉害了,我的递:4
厉害了,我的g:24
厉害了,我的递:5
厉害了,我的g:120
厉害了,我的递:6
厉害了,我的g:720
数值6 的阶乘等于720 (递归)
数值6 的阶乘等于720 (循环)

猜你喜欢

转载自blog.csdn.net/weixin_42530700/article/details/88932432