拋出段錯誤我沒有頭緒爲什麼這個函數輸出Segmentation fault
時n >= 128
雙端隊列後128次迭代
顯然,這應該處理long long n
輸出第一n
斐波那契數之和的最後一位。
我不問一個解決方案,我知道有替代品!
我想知道的是爲什麼Segfault?我錯過了什麼嗎?這是我第一次處理deque
btw。
#include <iostream>
#include <deque>
using namespace std;
int fibonacci_sum_deque(long long n) {
if (n <= 2)
return n;
deque<int> sum(4);
sum[0] = 0;
sum[1] = 1;
sum[2] = 2;
for (long long i = 3; i <= n; ++i) {
sum[3] = (sum[2] + sum[1] + 1) % 10;
sum.pop_front();
}
return sum[2];
}
int main() {
long long n = 0;
cin >> n;
cout << fibonacci_sum_deque(n);
}
GDB輸出:
Program received signal SIGSEGV, Segmentation fault.
0x0000000000401861 in fibonacci_sum_deque(long long)()
(gdb) where
#0 0x0000000000401861 in fibonacci_sum_deque(long long)()
#1 0x000000000040342d in main()
下的valgrind運行,如果你是在Linux上 – pm100
您初始化雙端隊列4種元素和流行'正2'元素關閉 – Kevin
@Kevin對不起,我什麼時候彈出第二個元素?我每次迭代都會彈出'n-1'元素。它可以很好地從'0'運行到'127' –