|
Функции и структура программРекурсия Функции в C могут использоваться рекурсивно, то есть, функция может вызвать сама себя непосредственно или опосередково. Рассмотрим вывод числа как символьный цепочку. Как мы отмечали ранее, цифры генерируются в неправильной последовательности: младшие числа доступны раньше старшие числа, хотя их нужно выводить наоборот. Существует два способа решения этой проблемы. Одним будет сохранение цифр в массив при их генерации, затем напечатать их в обратной последовательности, как мы это осуществили с itoa в Разделе 3.6. Альтернативой является рекурсивное решение, в котором printd сначала вызывает себя чтобы справиться с начальными цифрами, после чего выводит конечные цифры. Имейте в виду, что эта версия может потерпеть неудачу на крупнейшем отрицательном числе. # Include / * Printd: вывести n как десятичное * / void printd (int n) { if (n <0) { putchar ('-'); n =-n; } if (n / 10) printd (n / 10); putchar (n% 10 + '0 '); } При вызове функции самого себя рекурсивно, каждое обращение получает свежий набор всех автоматических переменных, независимых от попередьного набора. Таким образом, в printd (123), первая printd получает аргумент n = 123. Она передает 12 вторых printd, которая в свою очередь передает 1 третьем. printd третьего уровня выводит 1 после чего возвращается к printd второго уровня, которая выводит 2, затем возвращается к первому уровню. Он выводит 3 и завершается. Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Продолжение статьи: ч.15 Продолжение статьи: ч.16 Продолжение статьи: ч.17 Продолжение статьи: ч.18 Продолжение статьи: ч.19 Продолжение статьи: ч.20 Продолжение статьи: ч.21 Другие статьи по теме: - Введение в c++- Символьные массивы - Внешние переменные и область действия - Типы, операторы и выражения - Функции и структура программ |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |