C# 4.0 C语言中的循环与阶乘计算#
我刚开始学c。我试着计算一个数字的阶乘函数。循环运行的次数超出了我的理解。下面是函数的代码C# 4.0 C语言中的循环与阶乘计算#,c#-4.0,C# 4.0,我刚开始学c。我试着计算一个数字的阶乘函数。循环运行的次数超出了我的理解。下面是函数的代码 static int func(int p) { int l = 1; while(p>0) { l = l*p; p--; } } 这里是解释 int l=1//因为是初始数字 while(p>0)//这意味着当您想要得到阶乘的数字大于0时,循环中的所有内容都将执行 假设p=3,那么: 第一次-l*3=3。并将
static int func(int p)
{
int l = 1;
while(p>0)
{
l = l*p;
p--;
}
}
这里是解释
int l
=1//因为是初始数字
while(p>0)
//这意味着当您想要得到阶乘的数字大于0时,循环中的所有内容都将执行
假设p=3,那么:
第一次
-l*3=3。并将-1减为p
第二次
-现在,p=2,然后l*2=6,并将-1减去p
第三次
-现在,p=1,然后是l?1=6,子步骤-1到p
现在p=0,那么循环将结束
**如果p=3,则执行while循环的次数为3
如果p=10,则时间为10。**
您的函数如下所示:
public int GetFactorial(int number)
{
int start = 1;
while(number > 0)
{
start = start * number;
number--;
}
return start;
}
现在好多了?:) 循环运行次数为p。每转一圈,p=p-1;(p--;)在p为0时运行循环中断。仅供参考-您的函数没有返回,因此不会编译。它还将为
p
>12生成不正确的结果,因为它将溢出l
。它不起作用@Oscar Bralo它的代码与现在差不多。。我只是忘了提到返回语句,但即使这样也不起作用。结果仍然是0。对我有效。复制我评论的代码。或者只在你的代码中添加返回值。对我来说也是如此。我第二次又犯了一些错误。谢谢,太好了!!如果答案对你有帮助,请标记为正确答案,以便帮助其他人;)我很高兴帮助你!