Форум программистов, компьютерный форум, киберфорум
Наши страницы

Праздный интерес про компиляцию, когда метод вызывает сам себя - C#

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C# Cannot implicitly convert type 'string' to 'bool' http://www.cyberforum.ru/csharp-beginners/thread1736140.html
bool res = !a.Any(x => reporting.Where(r => r.File as string ?? r.File?.Name).Contains(x)); Что я делаю не так?
C# Опишите массив, сделайте ввод массива найти среднее арифметическое чисел, неравных заданному числу C, Опишите массив, сделайте ввод массива найти среднее арифметическое чисел, неравных заданному числу C, и подсчитать количество неположительных чисел, стоящих на четных местах. http://www.cyberforum.ru/csharp-beginners/thread1736134.html
Чтение файла в массивы и дальнейшая работа с ними C#
Здравствуйте! Столкнулся с проблемой чтения массивов из файла. Задача следующая: необходимо считать из файла, в котором 4 столбца и n строк, массивы так, чтобы каждый столбец был отдельным массивом...
C# Вычисление функции с использованием разложения в ряд
Привет всем, помогите с программой: Необходимо разработать программу, вычисляющую значение функции с помощью разложения в ряд. Сумма ряда вычисляется при помощи цикла с неизвестным числом...
C# Алгоритм Беллмана-Форда http://www.cyberforum.ru/csharp-beginners/thread1736076.html
Здравствуйте. Может ли быть на входе доя алгоритма Беллмана-Форда граф, состоящий из ДВУХ вершин? Если да, то как обрабатывать этот случай? Добавлено через 1 час 11 минут И могут ли быть петли в...
C# Создать массив украинских букв Как создать массив хранящий в себе буквы украинского алфавита(заглавные в том числе). Массив английских создается char letters = Enumerable.Range('a', 'z' - 'a' + 1).Select(c =>... подробнее

Показать сообщение отдельно
kolorotur
Эксперт .NET
9854 / 8233 / 1383
Регистрация: 17.09.2011
Сообщений: 14,148
16.05.2016, 13:51
Цитата Сообщение от Леманофф Посмотреть сообщение
блок кода запускается многократно, и то значение, что осталось где-то в памяти от его предыдущего запуска(выходные данные), он же использует для себя эти данные на входе ?
На каком входе?
Если функция вызывается рекурсивно, то для текущего вызова результат работы другой функции хранится в определенном месте, о котором она знает.
Вот она запустила другую функцию (даже если с тем же кодом, т.е. рекурсивный вызов), а потом просто достала нужное значение из известного регистра.

Цитата Сообщение от Леманофф Посмотреть сообщение
Т.е. роль данных за счет логики кода, двойная. Они , будучи полученными, за счет работы метода, и являющиеся результатом его, при последующем запуске кода, являются уже для этого n-го запуска аргументом ?
Ну как и с любым другим методом: результат работы одного метода может служить входным параметром другому методу.
А может и не служить, как например в функции вычисления факториала:
C#
1
2
3
4
5
int Factorial(int n)
{
   if (n <= 1) return 1;
   return n * Factorial(n - 1);
}
Здесь результат рекурсивного вызова не передается другому методу, а просто используется в качестве возвращаемого значения.

Цитата Сообщение от Леманофф Посмотреть сообщение
[(аргумент для нового запуска блока кода)=(return от предыдущего запуска блока кода)+(что-то делаем с ним)]*n раз в фрейме вызова ?
Правильно ?
Зависит от реализации функции
В примере с факториалом return от предыдущего запуска используется только для текущего return'a, а не для вызова другой функции.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru