int get_fact(int N) { int fact=1; while(N--) { fact=fact*N; } return fact; }
为什么它给一个零??尝试使用N的阶乘。在这里使用while循环。但不知何故0被乘。但为什么会发生这种情况?
64jmpszr1#
while循环允许您重复执行代码,直到布尔值变为false(当条件变为0时)。
while (N--)
将继续执行,直到N的值等于0,此时条件变为false。任何数字乘以0都将得到0。这就是您的答案。将其更改为:
int get_fact(int N) { int fact = 1; while(N) { fact = fact * N; N--; } return fact; }
关于C语言中前缀和后缀++的区别,请参见; https://www.eskimo.com/~scs/readings/autoincrement.990118.html
1条答案
按热度按时间64jmpszr1#
while循环允许您重复执行代码,直到布尔值变为false(当条件变为0时)。
将继续执行,直到N的值等于0,此时条件变为false。任何数字乘以0都将得到0。这就是您的答案。
将其更改为:
关于C语言中前缀和后缀++的区别,请参见; https://www.eskimo.com/~scs/readings/autoincrement.990118.html