Рекурсия является более дорогостоящей в памяти, поскольку каждый рекурсивный вызов обычно требует, чтобы адрес памяти был продвинут к стеку - так, чтобы позже программа могла вернуться к тому вопросу.
однако, существует много случаев, в которых рекурсия является намного более естественной и читаемой, чем циклы - как при работе с деревьями. В этих случаях я рекомендовал бы придерживаться рекурсии.
В документации:
http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat
В нем говорится:
( ...) если вы знаете матричный элемент типа, например, float, тогда вы можете используйте метод at <> ()
То есть вы можете использовать:
Mat M(100, 100, CV_64F);
cout << M.at<double>(0,0);
Возможно, проще использовать класс Mat_
. Это шаблон-оболочка для Mat
.
Mat_
имеет перегруженный оператор operator ()
для доступа к элементам.