C语言中的f=n!是什么意思?还有下面的题目为什么选D,详解
假设变量已正确定义,则以下能正确计算f=n!的程序段是(D)。A)f=0;B)f=1;for(i=1;i<=n;i++)f*=i;for(i=1;i<n;i++)f*=i...
假设变量已正确定义,则以下能正确计算f=n!的程序段是( D )。
A)f=0; B)f=1;
for(i=1;i<=n;i++) f*=i; for(i=1;i<n;i++) f*=i;
C)f=1; D)f=1;
for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--) f*=i; 展开
A)f=0; B)f=1;
for(i=1;i<=n;i++) f*=i; for(i=1;i<n;i++) f*=i;
C)f=1; D)f=1;
for(i=n;i>1;i++) f*=i; for(i=n;i>=2;i--) f*=i; 展开
展开全部
答案D是对的。
n!就是n的阶乘,也就是n(n-1)(n-2)……2*1。如果n=5,n!=5*4*3*2*1或者5*4*3*2,都一样嘛。
题目中,f的作用是存储每次乘积的值。首先排除A,A中f=0,每次相乘都是0.比如5!吧,第一次应该是f=f*5,f初值是0,那么等号左边的f被赋值后还是0,最后结果永远是0,算不出值来。
B错误原因,就是i<n这里,控制条件应该是i<=n,否则少乘n,就成了5!=1*2*3*4,是不对的。
C错误原因,i的初值是n,i++每次加1,i>1几乎是每次都是对的。也就是f*=i每次循环下去,for循环都出不来了。
D正确,控制条件i>=2就好比n!=n(n-1)(n-2)……2,5!=5*4*3*2,没有*1,但是结果是一样的。
注意,如果n输入0是不进入for循环的,直接f=1输出即可。因为0!=1.
n!就是n的阶乘,也就是n(n-1)(n-2)……2*1。如果n=5,n!=5*4*3*2*1或者5*4*3*2,都一样嘛。
题目中,f的作用是存储每次乘积的值。首先排除A,A中f=0,每次相乘都是0.比如5!吧,第一次应该是f=f*5,f初值是0,那么等号左边的f被赋值后还是0,最后结果永远是0,算不出值来。
B错误原因,就是i<n这里,控制条件应该是i<=n,否则少乘n,就成了5!=1*2*3*4,是不对的。
C错误原因,i的初值是n,i++每次加1,i>1几乎是每次都是对的。也就是f*=i每次循环下去,for循环都出不来了。
D正确,控制条件i>=2就好比n!=n(n-1)(n-2)……2,5!=5*4*3*2,没有*1,但是结果是一样的。
注意,如果n输入0是不进入for循环的,直接f=1输出即可。因为0!=1.
展开全部
就是把n的阶乘赋值给f。
f*=i就是f=f*i。D选项用循环控制,让f从n开始乘,一直乘到1,然后跳出循环,此相当于就是n!(n的阶乘)。
f*=i就是f=f*i。D选项用循环控制,让f从n开始乘,一直乘到1,然后跳出循环,此相当于就是n!(n的阶乘)。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f=0不考虑,因为什么是乘以0都是0,a不对
i取值从1~n,那么b中i取值是到n-1,不对
c也不对,i++,从n开始,每次都大于1,所以死循环
只有d是对的,i=1是可以不计算,不影响结果,因为任何数乘以1还是本身
i取值从1~n,那么b中i取值是到n-1,不对
c也不对,i++,从n开始,每次都大于1,所以死循环
只有d是对的,i=1是可以不计算,不影响结果,因为任何数乘以1还是本身
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
此题解的是数学里面的n阶乘,也就是1*2*3*。。。*n的值,并且赋值给f。因此此题只有D符合n阶乘的算法。D for循环相当于式子 f=n*(n-1)*(n-2)*...*1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询