Je n'ai pas la moindre idée pourquoi cette fonction génère Segmentation fault
lorsque n >= 128
deque jette Segfault après 128 itérations
Apparemment, cela était censé gérer long long n
pour sortir le dernier chiffre de la somme des premiers n
nombres de Fibonacci.
Je ne demande pas de solution, je sais qu'il y a des alternatives!
Tout ce que je veux savoir, c'est pourquoi le Segfault? Est-ce que je manque quelque chose? C'est la première fois que je fais affaire avec 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);
}
sortie 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()
exécutés sous valgrind si vous êtes sur linux – pm100
Vous initialisez le deque avec 4 éléments et de la pop 'n-2' éléments hors – Kevin
@ Kevin Excusez-moi, quand est-ce que j'ai fait apparaître le deuxième élément? Je lance l'élément 'n-1' par itération. Cela fonctionne bien de '0' à' 127' –