Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Функции и структура программ


Рекурсия

Функции в 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 и завершается.

Другие статьи по теме:

- Введение в c++
- Символьные массивы
- Внешние переменные и область действия
- Типы, операторы и выражения
- Функции и структура программ


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами