谁帮忙看下求阶乘这两个函数有区别吗:

来源:百度知道 编辑:UC知道 时间:2024/06/16 22:59:09
谁帮忙看下这两个函数有区别吗:
Function F(n)
if n=0 then
n=1
else
F = F(n-1) * n
end if
end Function

Function dg(n)
If n = 0 Then
dg = 1
Else
dg = dg(n - 1) * n
End If
End Function

上面那个咋输出0呢?

就题论题的话,第一段程序中 n=1,应该改为F=1。程序里面的标点一定要注意,这个是一个习惯的养成。

对于这个问题,我认为这段程序它应该是一个子函数,子函数中应该特别注意变量的类型,需要加以定义。我给出一种算法,在时间复杂度上要比上面的算法简单,运行结果所需要的时间也就更少。

int factorial(int n)
{
if(n==0)
return 1;
else
return n*factorial(n-1);
}

这种算法只能求一些小数的阶乘,如果主函数中结果数据定义为长双精度浮点型(long double),最多也是算到170的阶乘,再大就不行了。如果想要计算大数阶乘的话,就需要定义一个数组来存储结果,在网上有这方面的成果,你可以自己看一下。

if n=0 then
n=1
改为
if n=0 then
F=1