阶乘代码实现
今天一个问题提问:说知道乘法原理,但是不明白代码实现的。研究了一下,发现可以封装起来备用,所以记录下。
所以,后面我自己写了一遍:
int main()
{
int Store[10000];
Store[0] = 1;
int every = 0;
int M = 0;
int digit = 1;
int N = 5;
if (N >= 0 && N <= 1000)//计算N的阶乘
{
for (int i = 1; i <= N; i++)//外循环 N
{
for (int j = 0; j < digit; j++)
{
/*内循环 当前结果乘以N
比如当前N是5,那么现在进来内循环的时候
Store[]这个数组中存放的是4!的值也就是24
不过是倒着存储的,也就是Store[0] = 4,
Store[1] = 2;然后接下来的计算就是让Store[0]
和Store[1]分别乘以5,4*5=20,所以Store[0]从4变成了0,
进位M = 2,别慌,这个for循环还没有完,因为digit现在是2,
所以需要再循环一次
则,Store[1]*5=2*5=10,然后加上进位M等于12;
那么Store[1] = 2,M = 1;
进入while循环,Store[2] = 1;
至此,Store[] = { "0","2","1" },
最后倒叙输出,得到N的阶乘 5!= 120.
*/
every = Store[j] * i + M;
Store[j] = every % 10;
M = every / 10;
}
while (M != 0)
{
Store[digit] = M % 10;
M = M / 10;
digit++;
}
}
for (int i = digit-1;i>=0;i--)
{
cout << Store[i];
}
}
getchar();
return 0;
}
希望对你也有所帮助哦~
追逐远方的梦: 哈哈,讲的好,我也在苏州上学呢