2017-10-16 97 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