Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Рекурсивные определения функций



В языках Си/Си++ допускается рекурсивное определение функций. Проиллюстрируем определение рекурсивной функции на примере вычисления факториала целого положительного числа.

long Factor (int n)

{ if (n<0) return 0;

if (n==0) return 1;

return n*Factor (n-1);

}

В случае если при вызове функции будет задан отрицательный аргумент, она вернет нулевое значение - признак неверного об­ращения.

Передача значений через глобальные переменные. Областью дей­ствия описания программного объекта называется часть програм­мы, в пределах которой действует (учитывается) это описание. Если переменная описана внутри некоторого блока, то она локализо­вана в этом блоке и из других блоков, внешних по отношению к данному, «не видна». Если описание переменной находится вне блока и предшествует ему в тексте программы, то это описание действует внутри блока и называется глобальным. Глобальная пе­ременная «видна» из блока. Например:

double х;

int func1 ()

{ int y;... }

void main ()

{ float: у;...}

Переменная х является глобальной по отношению к функ­циям func1, main и, следовательно, может в них использо­ваться. В функциях func1 и main имеются локальные перемен­ные с одинаковым именем у. Однако это разные величины, никак не связанные друг с другом. Поскольку переменная х яв­ляется общей для обеих функций, то они могут взаимодейство­вать через х друг с другом.

При обращении к функции передача значений возможна как через параметры, так и через глобальные переменные. Используя этот механизм, в программах на Си можно реализовывать функ­ции, работающие подобно процедурам в Паскале. В следующей программе решается уже рассматриваемая нами задача получения наибольшего из трех значений.





Дата публикования: 2014-11-02; Прочитано: 277 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...