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

私は間違って理解していない。ラインfor col=1:1:n

+0

ここに実装しようとしているのは何ですか?どの式? –

+0

ヘルプセンターからの引用*デバッグのヘルプを求める質問(「なぜこのコードは動作しませんか?」)には、* ***希望の動作が含まれている必要があります。***、参照:[MCVE ]。 "* –

+0

この質問はガイドラインの範囲内にあると言っているヘルプセンターの見積もりの​​一部を削除しました。 デバッグヘルプを求める質問(「なぜこのコードは機能しないのですか?」)には、目的の動作、特定の問題**またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります** –

答えて

3

colrowはまだ1場合でも、値nまで得ることができます。したがって、factorial(row-col)に電話すると、row1となり、col2になります。これが負の可能性がある場所です。

+2

これはコメントのIMOである必要があります。これは問題の解決方法を提供しないためです。それは問題を示しているだけです –

+1

問題は、そのコードのどの部分が負の階乗を引き起こしたかです。私はこれがその質問に答えると思います。 –

+2

時々、答えはYes/Noでも可能ですが、それは適切な回答にはなりませんIMO –

-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 
関連する問題