哪一部分是非负整数? (因子误差)

时间:2017-10-16 06:04:29

标签: matlab octave factorial

这是剧本:

n=input('Enter the number of rows: ')
PT=zeros(n);
row=1;
col=1;
while row~=n+1
  for col=1:1:n
    PT(row, col)=(factorial(row-1)/(factorial(col-1)*factorial(row-col)));
  end 
  row=row+1;
  col=1;
end
PT

当我运行它时,它会输入行数,因此我输入了' 4'。然后它说

error: factorial: all N must be real non-negative integers
error: called from
    factorial at line 40 column 5 
    hw6p2 at line 7 column 17 

我不明白错误。

2 个答案:

答案 0 :(得分:3)

for col=1:1:n行中,即使col仍为nrow也可以达到值1。因此,当您致电factorial(row-col)时,row可以是1col可以是2。这可能是消极的。

答案 1 :(得分:-2)

你的阶乘输入不应该为负.....在循环(row-col)中取负值并弹出错误。使用 abs 使其始终为正。

n=input('Enter the number of rows: ')
PT=zeros(n);
row=1;
col=1;
while row~=n+1
  for col=1:1:n
    PT(row, col)=(factorial(row-1)/(factorial(col-1)*factorial(abs(row-col))));
  end 
  row=row+1;
  col=1;
end
PT