2017-10-16 81 views
-4

这是脚本:这是哪一部分非负整数? (阶乘错误)

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 

我不明白什么是错的。

+0

你想在这里实现什么?什么公式? –

+0

从帮助中心引用*“寻求调试帮助的问题(”为什么不是这个代码工作?“)必须包含* ***所需的行为***,... *请参阅:如何创建[MCVE ]。“* –

+0

您从帮助中心中删除了部分引用,说明此问题在指导范围内。 寻求调试帮助的问题(“为什么这个代码不工作?”)必须包含所需的行为,特定的问题**或错误以及在问题本身中重现问题所需的最短代码** –

回答

3

在行for col=1:1:ncol最多可以获得价值n,即使row仍然1。因此,当您拨打factorial(row-col)时,row可以是1col可以是2。这是它可能是负面的地方。

+2

这应该是IMO的评论,因为这不能解决问题。它只表示问题 –

+1

问题是他们的代码的哪一部分导致负因子。我认为这回答了这个问题。 –

+2

有时答案可能是偶数/是,但这并不是一个合适的答案IMO –

-2

您的阶乘输入不应该为负.....在循环(行 - 列)中取一个负值并弹出错误。使用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