Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как работает пример рекурсия ?
 
 автор: vakum1   (31.03.2008 в 14:39)   письмо автору
 
 

Объясните, пожалуйста, подробнее действия этого примера.

<?
function degree($x,$y)
{
if($y)
{
return $x*degree($x,$y-1); // тут не понятно, какой процесс ? что на что умножается ?
}
return 1;
}
echo(degree(2,4)); // выводит 16
?>
За ранее спасибо!

   
 
 автор: вит   (31.03.2008 в 17:00)   письмо автору
 
   для: vakum1   (31.03.2008 в 14:39)
 

ну ты вызываешь функцию degree($x,$y),пока $y истина тоесть 4 раза, каждый раз возвращаемый результат
умножается на 2 тоесть (2*(2*(2*(2*1)))) получается 16, скобки для наглядности проставил,
тоесть пять раз просто последний раз она возвращает 1

   
 
 автор: vakum1   (31.03.2008 в 18:58)   письмо автору
 
   для: вит   (31.03.2008 в 17:00)
 

return $x* - задаёт умножение в функции, degree($x - значение, которое должно умножаться само на себя,$y-1 - число раз);

Правильно понимаю ?
$y считает 3 2 1 0 или 4 3 2 1 ?
Откуда взялась единица ? И для чего ?

   
 
 автор: Atheist   (31.03.2008 в 19:09)   письмо автору
 
   для: vakum1   (31.03.2008 в 18:58)
 

Так понятнее?

function degree(2, 4)
{
    return 2 * function degree(2, 3)
    {
        return 2 * function degree(2, 2)
        {
            return 2 * function degree(2, 1)
            {
                return 2 * function degree(2, 0)
                {
                    return 1;
                }
            }
        }
    }
}


P.S. Это не PHP-код.

   
 
 автор: vakum1   (01.04.2008 в 00:59)   письмо автору
 
   для: Atheist   (31.03.2008 в 19:09)
 

if($y) return 2*degree(2,4-1);
2* умножается на 2 в скобочках или двойка в скобках умножается на саму себя ?

if($y) return 2*degree(2,4-1); результат 4
if($y) return 2*degree(2,4-2); результат 4
if($y) return 2*degree(2,4-3); результат 4
if($y) return 2*degree(2,4-4); результат 4
Как четыре результата слаживаются ? Автоматически ?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования