递归–传递(参数) 回归(返回值) //在方法体里面调用自己 ,引用自己 有一个终止条件 。
注意:递归必须有终止条件,否则就形成死循环
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 (循环)