用C语言编一个程序?

来源:百度知道 编辑:UC知道 时间:2024/05/04 18:59:21
给出一个3阶行列式的,得出结果

对于你的提问不是很清楚,不知您是否要求n的阶层。如果是的话不防看看这个程序:
int function(int n)
{
if (n==1 || n==0)
return 1;
else
return n*function(n-1);
}

我们把函数展开以后 变成了下面这样:

int function(int n){
if (n==1 || n==0)

return n*function(n-1);

else

return -n*function(n+1);
}

我们考虑n = 3的情况 正确的结果应该是3*2*1 = 6

这里我把function简写成f

先考虑f(3) 因为f(3)不满足(n==1 || n==0)
所以执行else里的语句

所以f(3) = -3 * f(3+1); = -3 * f(4);

那么同理得出 f(4) = -4*f(5)
f(5) = -5*f(6)

这样下去 n越来越大 没有尽头 所以引起了错误

#include <stdio.h>

double det3(double mat[][3])
{
return mat[0][0] * mat[1][1] * mat[2][2] +
mat[0][1] * mat[1][2] * mat[2][0] +
mat[1][0] * mat[2][1] * mat[0][2] -
mat[2][0] * mat[1][1] * mat[0][2] -
mat[1][0] * mat[0][1] * mat[2][2] -
mat[2][1] * mat[1][2] * mat[0][0];<