ВУЗ:
Составители:
Рубрика:
44
Console.WriteLine("Введите n:");
while(true)
{
try
{
n=uint.Parse(Console.ReadLine());
break;
}
catch (Exception ex)
{
Console.WriteLine("Введите корректное
число.");
}
}
uint k=Factorial(n); // первый вызов функции
Console.WriteLine("{0}!={1}", n, k);
}
}
На примере решения этой задачи рассмотрим, каким образом
выполняется рекурсивный вызов метода. Допустим, пользователь ввел
значение переменной n, равное 4.
Главная функция содержит вызов функции Factorial(4). Для
выполнения вызова метода в оперативной памяти выделяется некоторая
область, необходимая для запоминания адреса возврата, создания копий
параметров и копий локальных переменных.
Свободная область памяти в момент первого вызова Factorial(4)
на Рис. 4.2 изображена в виде пустого прямоугольника. Внутри
прямоугольника показано значение параметра n.
Вычисление факториала в методе Factorial(4) начинается с
проверки условия выхода из рекурсии (n==1 или n==0). Так как оно не
выполняется, происходит второй вызов Factorial(3), который является
первым рекурсивным вызовом метода. Для второго вызова также выделяется
некоторое количество памяти (Рис.4.3).
Рис. 4.2. Демонстрация первого вызова метода Factorial(4).
Console.WriteLine("Введите n:");
while(true)
{
try
{
n=uint.Parse(Console.ReadLine());
break;
}
catch (Exception ex)
{
Console.WriteLine("Введите корректное
число.");
}
}
uint k=Factorial(n); // первый вызов функции
Console.WriteLine("{0}!={1}", n, k);
}
}
На примере решения этой задачи рассмотрим, каким образом
выполняется рекурсивный вызов метода. Допустим, пользователь ввел
значение переменной n, равное 4.
Главная функция содержит вызов функции Factorial(4). Для
выполнения вызова метода в оперативной памяти выделяется некоторая
область, необходимая для запоминания адреса возврата, создания копий
параметров и копий локальных переменных.
Свободная область памяти в момент первого вызова Factorial(4)
на Рис. 4.2 изображена в виде пустого прямоугольника. Внутри
прямоугольника показано значение параметра n.
Вычисление факториала в методе Factorial(4) начинается с
проверки условия выхода из рекурсии (n==1 или n==0). Так как оно не
выполняется, происходит второй вызов Factorial(3), который является
первым рекурсивным вызовом метода. Для второго вызова также выделяется
некоторое количество памяти (Рис.4.3).
Рис. 4.2. Демонстрация первого вызова метода Factorial(4).
44
Страницы
- « первая
- ‹ предыдущая
- …
- 42
- 43
- 44
- 45
- 46
- …
- следующая ›
- последняя »
