Mam zdefiniowane To makrofunkcja Fibonacciego nie oblicza poprawnie
#define FIB(n) ((4 << n*(3+n))/((4 << (2*n)) - (2 << n) - 1))%(2 << n)
i gdy próbuję uzyskać odpowiedź, nie działa prawidłowo, przez przykład jeśli zadzwonię FIB (7), daje ja 0, to wyraźnie jest złe. Testowałem tę funkcję w Pythonie i działa idealnie. Więc każdy może mi wyjaśnić, dlaczego nie działa w C i C++?
Twoje makro nie bierze nawet argumentów, więc 'FIB (7)' nie ma nawet sensu, a 'FIB' sam działa tylko wtedy, gdy jest używany w zasięgu, w którym istnieje zmienna o nazwie' n'. –
Naprawiono @BenjaminLindley, to było błędne pisanie, kiedy to napisałem tutaj, –
Dlaczego zamiast tego nie użyjesz funkcji rekurencyjnej 'constexpr'? – skypjack