我得到這個函數計算階乘給出一個整數:爲什麼我的函數在添加正數時返回負數?
long iterFact(long number) {
long factorial = 1;
for (long i = 1; i <= number; i++)
factorial *= i;
return factorial;
}
但是當我通過例如20
作爲參數,它返回一個負數,我認爲這將是因爲數字變得很長,但即使將所有內容從int
更改爲long
,我仍然得到一個負數。
整數溢出。此外,它是因式而非斐波那契。 – zch
因爲階乘增長迅速並打破整數限制。 –
_「我以爲這是因爲數字太長了,但我仍然得到一個負數,因爲即使改變了從int到long的所有內容,」_' long'也不是無限的。而不是猜測,檢查每個值,並找出你的類型是否足夠大 –