问题
单项选择题
某人为计算n!(0<n<=12)编写了下面的函数过程:
Private Function fun(n As Integer)As Long
Dim P As Long
P=1
For k=n-1 To 2 Step-1
p=p*k
Next k
fun=p
End Function
在调试时发现该函数过程产生的结果是错误的,程序需要修改。下面的修改方案中有3种是正确的,错误的方案是( )
A.把p=1改为p=11
B.把For k=n-1 To 2 Step-1改为For k=1 To n-1
C.把For k=n-1 T0 2 Step-1改为For k=1 To n
D.把For k=-n-1 To 2 Step-1改为For k=2 To n
答案
参考答案:B
解析: N的阶乘的数学表示为:N!=N*(N-1)*(N-2)…2*1
本题要通过将For循环语句的循环变量k的各次取值经表达式p=p*k进行累积,来实现N的阶乘。但源程序仅实现了(n-1)的阶乘。解决问题的方法,将P的初值设置为m或将循环变量的取值范围设定为1~n(或2~n)。