Member 14517556 Ответов: 3

Хотите небольшое объяснение по рекурсии


Может ли какой-нибудь орган, пожалуйста, подробно объяснить следующие строки:

Правильное определение простой рекурсивной функции основано на четырех ключевых понятиях:
1. функция необязательно должна вызывать саму себя в пределах своего определения; это рекурсивный случай.
2. Функция необязательно не должна вызывать саму себя в рамках своего определения; это базовый случай.
3. некоторый вид условного выполнения (например, оператор if/else) выбирает между рекурсивным случаем
и базовый случай, основанный на одном или нескольких параметрах, переданных функции.
4. каждый вызов, который действительно соответствует базовому случаю, должен вызывать себя с параметром(параметрами), которые перемещают
исполнение ближе к базовому варианту. Рекурсивное выполнение функции должно сходиться к базовому случаю.

Что я уже пробовал:

Я пытался понять это, но безуспешно. я не могу понять, что такое вызов функции внутри себя? Что такое базовый случай и рекурсивный случай?


если у кого-то есть какая-то теория, связанная с этим, пожалуйста, перешлите мне или порекомендуйте какую-нибудь книгу или видео, из которых это можно было бы понять.

3 Ответов

Рейтинг:
24

OriginalGriff

Вызов функции внутри себя очень прост. Вспомните классический пример: факториалы.
n! является n * (n-1) * (n-2) * (n-3) пока сроки достигать 1. Е. Г.:

4! = 4 * 3 * 2 * 1
6! = 6 * 5 * 4 * 3 * 2 * 1
В коде C# (я отказываюсь писать Python, это игрушечный язык)
int Factorial(int n)
   {
   if (n <= 1) return 1;
   return n * (Factorial(n - 1);
   }
Функция Factorial вызывает саму себя для генерации последовательности. Каждый раз, когда он вызывается, ему передается параметр, который на единицу ниже, чем это было в прошлый раз, пока он не достигнет конца, когда вместо этого он возвращает 1.
Возвращаемый 1-это "базовый случай", остальное - "рекурсивный случай".

Попробуйте это на бумаге и посмотрите, что получится. Это довольно очевидно, если хорошенько подумать.


Member 14517556

Спасибо. Очень красиво объяснено

OriginalGriff

Всегда пожалуйста!

Рейтинг:
2

jsc42

Часть вашей проблемы может заключаться в том, что "концепции", которые вы утверждаете, имеют небольшой недостаток …

4. каждый вызов, который соответствует базовому случаю, должен вызывать себя с параметром(ами), которые перемещают выполнение ближе к базовому случаю. Рекурсивное выполнение функции должно сходиться к базовому случаю.

должно быть

4. каждый вызов, который делает нет соответствующий базовый случай должен вызывать сам себя с параметром(ами), которые перемещают выполнение ближе к базовому случаю. Рекурсивное выполнение функции должно сходиться к базовому случаю.


Member 14517556

я взял эту теорию из книги так что это не мой текст но спасибо Вам за ваш ответ

Рейтинг:
1

Patrice T

Цитата:
Я пытался понять это, но безуспешно. я не могу понять, что такое вызов функции внутри себя? Что такое базовый случай и рекурсивный случай?

Помните: Google-ваш друг.
Прочтите мне лекцию:
Рекурсия - Википедия[^]
Рекурсия (информатика) - Википедия[^]
Рекурсия - GeeksforGeeks[^]

Как только вы нашли некоторый образец рекурсивного кода, используйте отладчик, чтобы наблюдать за выполнением кода, отладчик-отличный инструмент обучения.