November 12th, 2013

nyaload

вычисление N-ого число Фиббоначи, без циклов

Простой сишный/питоний код, вычисляющий N-е число Фиббоначи


#include <math.h> // почему C++ программисты не пишут includ-ы при публикации кусков кода?
int fib(unsigned N) {
   return int(0.5+(pow(1.618033988749895, N) / 2.23606797749979));
}


Это известная формула Бине. Второй член в ней стремится к нулю, и его можно выкинуть.
Точности double хватает до 70-го числа 190392490709135 ( 48 битов ).
nyaload

default eol

В моей программе на работе есть 170 строчек вида 'std::cerr.*<<'
Из них в 165 - содержатся '\n' или std::endl

5 из них - не содержат ни '\n' или std::endl, и в 2 случаях из 5 - это опечатка, EOL нужен.

Мораль:
Когда делаете отладочный вывод - лучше по умолчанию добавлять '\n'. Лучше явно указывать что EOL не нужен, чем явно указывать что он нужен: так будет меньше букв, и меньше багов. Для вывода без EOL - отдельное явное указание, что он нужен.

У вас диагностика вида (MY_LOG << a << b << c) вместо MY_LOG(a << b << c) и MY_LOG(format_string, a, b, c)?
Увы, вам не повезло, вы будете отчаяно спорить "это умолчание не нужно, мне не впадлу писать каждый раз endl, макросы зло".