Ich habe keine Ahnung, warum diese Funktion Segmentation fault
ausgibt, wenn n >= 128
deque wirft Segfault nach 128 Iterationen
Offenbar dies sollte long long n
zur Ausgabe der letzte Ziffer der Summe der ersten n
Fibonacci-Zahlen behandeln.
Ich frage nicht nach einer Lösung, ich weiß, es gibt Alternativen!
Alles, was ich wissen will ist, warum der Segfault? Fehle ich etwas? Es ist mein erstes Mal, mit deque
BTW umzugehen.
#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 Ausgang:
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()
Lauf unter valgrind, wenn Sie auf Linux sind – pm100
Sie die deque mit 4 Elementen initialisieren und Pop 'n-2' Elemente aus – Kevin
@ Kevin Entschuldigung, wann habe ich das zweite Element veröffentlicht? Ich knalle 'n-1' Element pro Iteration. Es funktioniert gut von "0" bis "127" –