Язык С++ и программирование на нем. Рейзлин В.И. - 69 стр.

UptoLike

Составители: 

71
else {cnum(n/a); cout <<n%a;}
}
При косвенной рекурсии осуществляется перекрёстный вызов
функциями друг друга. Хотя бы в одной из них должно быть условие,
вызывающее прекращение рекурсии.
Косвенная рекурсия является одним из тех случаев, когда нельзя
определить функцию до использования её имени в программе.
Пусть функция f1() вызывает f2(), которая, в свою очередь, обра-
щается к f1(). Пусть первая из них определена ранее второй. Для того
чтобы иметь возможность обратиться к функции f2() из f1(), мы должны
поместить объявление имени f2 раньше определения обеих этих функ-
ций:
void f2();
void f1(){
if (…);
f2();
…}
void f2(){
f1();
…}
16.8. Аргументы по умолчанию
Удобным свойством С++ является наличие предопределённых
инициализаторов аргументов. Значения аргументов по умолчанию мож-
но задать в объявлении функции, при этом они подставляются автома-
тически в вызов функции, содержащий меньшее число аргументов, чем
объявлено. Например, следующая функция объявлена с тремя аргумен-
тами, два из которых инициализированы:
error (char* msg, int level = 0, int kill = 0);
Эта функция может быть вызвана с одним, двумя или тремя аргу-
ментами:
error (“Ошибка!”); // Вызывается error (“ошибка”, 0, 0);
error (“Ошибка!”, 1); // вызывается error (“ошибка”, 1, 0);
error (“Ошибка!”, 3, 1); // значения аргументов по умолчанию
// не используются.