русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Рекурсия


Дата добавления: 2013-12-23; просмотров: 1157; Нарушение авторских прав


Вложенные функции

Статические переменные

Глобальные переменные

Если функцие необходимо добраться к глобальной переменной, то в ее теле необходимо до первого использования в своем теле внешней переменной объявить ее "глобальной" при помощи инструкции global:

global $variable;

<?php ## Глобальные переменные в функции.

$monthes = array( 1 => "Январь", 2 => "Февраль", // ... 12 => "Декабрь" ).;

// Возвращает название месяца по его номеру. Нумерация начинается с 1!

function getMonthName($n) {

global $monthes;

return $monthes[$n];

}

// Применение.

echo getMonthName(2); // выводит "Февраль"

?>

Массив $monthes, содержащий названия месяцев, довольно объемный. Поэтому описывать его прямо в функции было бы неудобно — он бы тогда создавался при каждом вызове функции.

В РНР есть еще один вид переменных - статические. Работают они точно так же, как и в С. Конструкция static сообщает компилятору, что уничтожать указанную переменную для функции между вызовами не надо. В то же время присваивание $count = 0 сработает только один раз, а именно — при самом первом обращении к функции. Рассмотрим пример функции, которая подсчитывает, сколько раз она была вызвана.

<?php ## Статические переменные,

function selfcount() {

static $count = 0;

$count++;

echo $count;

}

for ($i=0; $i<5; $i++) selfcount();

?>

После запуска будет выведена строка 12345. Если убрать слово static, то выведет: 11111. Т.к.переменная $count стала локальной, и при каждом вызове функции ее значение не определено (что воспринимается оператором ++ как 0).

Стандарт РНР не поддерживает вложенные функции. Однако он поддерживает нечто, немного похожее на них. Вместо того чтобы, как и у переменных, ограничить область видимости для вложенных функций своими "родителями", РНР делает их доступными для всей остальной части программы, но только с того момента, когда "функция-родитель" была из нее вызвана.



<?php ## Вложенные функции,

function father($a) {

echo $a, "<br>";

function child($b) {

echo $b + 1, "<br>";

return $b * $b;

}

return $а * $а * child($a);

// фактически возвращает $а * $а * ($а+1) * ($а+1)

}

// Вызываем функции.

father(10);

child(30);

?>

Если вызвать их в обратном порядке, это приведет к ошибке.

В РНР поддерживаются рекурсивные вызовы функций, т. е. вызовы функцией самой себя .

Рассмотрим пример рекурсивной функции — факториал из некоторого числа n (обозначается n!), равный значению 2*3*4*...*n.

function factor($n) {

if ($n <= 0) return 1; //условие выхода из рекурсии

else return $n * factor($n — 1); //рекурсивный вызов

echo factor(20) ;

}

 



<== предыдущая лекция | следующая лекция ==>
Локальные переменные | Протокол HTTP


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.