Найти - Пользователи
Полная версия: Описать рекурсивную функцию С(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: С(0,n) = C(n,n) = 1, C(m,n) = C(m,n-1) + C(m-1, n-1)
Начало » Python для новичков » Описать рекурсивную функцию С(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: С(0,n) = C(n,n) = 1, C(m,n) = C(m,n-1) + C(m-1, n-1)
1
elv
Описать рекурсивную функцию С(m,n) целого типа, находящую число сочетаний из n элементов по m, используя формулу: С(0,n) = C(n,n) = 1, C(m,n) = C(m,n-1) + C(m-1, n-1) при 0 < m< n (m и п - целые параметр;n> 0, 0 <= m <= n). Дано число N и пять различных значений М. Вывести числа С(M,N) вместе с количеством рекурсивных вызовов функции С, потребовавшихся для их нахождения.
py.user.next
Сочетание - это вот у тебя есть элементы 1 2 3, и вот их одновременное нахождение вместе - это и есть сочетание. Поэтому порядок не важен: 1 2 3, 2 3 1, 3 1 2 и так далее - это всё одно и то же сочетание. Сочетание из трёх по два - это значит, что всего возможных есть три разных значения, а рассматриваются из этих трёх возможных значений только сочетания по два элемента в каждом сочетании. То есть, например, есть возможные числа 1 2 3, которые можно использовать, и мы из них берём только по два элемента 1 2, 3 1, 2 3, 3 2 и так далее. Это сочетания из трёх по два. Причём сочетания 2 3 и 3 2 считаются одним сочетанием, потому что это одно и то же, так как порядок в сочетании не важен. Ну и, соответственно, когда встаёт вопрос о числе сочетаний, то речь идёт о количестве таких разных пар, которые не являются одним и тем же. То есть для сочетаний из трёх по два количество сочетаний равно трём. Это 1 2, 2 3 и 1 3.

Если у тебя есть не числа 1 2 3, а фрукты яблоко груша и апельсин, то сочетания из трёх по два будут такими: яблоко и груша, груша и апельсин, яблоко и апельсин. Всё, больше сочетаний не будет, как ты эти фрукты не переставляй местами. Мы просто числа заменили на образы фруктов, которые мы можем легко представить. Числа сложнее представлять, потому что для их представления в виде образа нужно вырабатывать специальные мыслительные навыки. А фрукты легко представить, потому что они есть у нас в памяти.

Так же можно взять комнату и все предметы в ней. И найти сочетания по десять предметов. Например, в ней сто предметов, а ты берёшь разные сочетания по десять предметов. И так можно найти число всех таких сочетаний. Число сочетаний из ста по десять.

Это первое, что нужно сделать, когды ты пытаешься что-то запрограммировать. Нужно понять вообще, о чём речь идёт.

Дальше рекурсия. Рекурсия - это отдельное понятие, которое к сочетаниям не имеет отношения вообще. Она может работать с сочетаниями, а может не работать с сочетаниями, а работать с кроликами, которые плодятся. То есть она не привязана к сочетаниям, поэтому её не нужно изучать именно в контексте сочетаний обязательно.

Рекурсия - это матрёшка. Ты открыл большую матрёшку, а там внутри матрёшка поменьше. Ты открыл матрёшку поменьше, а там внутри матрёшка ещё поменьше. Ты открыл матрёшку ещё поменьше, а там внутри матрёшка ещё гораздо меньше. И так продолжается, пока ты не дойдёшь до самой глубокой маленькой матрёшки. А потом ты складываешь их обратно. При этом порядок, в котором ты их складываешь, должен соблюдаться такой же, чтобы в конце после сложения всех матрёшек получилась только одна большая матрёшка, а не одна большая и ещё одна какая-то поменьше осталась снаружи, потому что она куда-то там не поместилась из-за неправильно сложенных матрёшек внутри. Вот что такое рекурсия.

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

Это всё нужно, чтобы когда ты вырастешь, ты мог свои задачи решать сам. Если ты не будешь свои задачи решать сам, то тебе придётся готовить денежки. Ты захочешь, допустим, починить водяную трубу дома, заменить её с дырявой на целую, чтобы вода не текла на пол, тебе придётся готовить денежки для сантехника, который умеет это делать. Ты захочешь, допустим, проложить провод электрический в коридор или в кладовку, чтобы там свет включать и всё видно было, тебе придётся готовить денежки для электрика, который умеет это делать. И так во всём. Дети в школу пойдут у тебя, прибегут к тебе с двойкой в дневнике и спросят “папа! а что такое корень из ста?” и тебе снова придётся готовить денежки для репетитора по математике, который умеет всё это делать. И так во всём. А где ты будешь денежки брать? Кто тебе будет их давать? Кому это надо? Нигде, Никто, Никому.

Так что учись сейчас, чтобы уметь потом. Иначе в сорок лет ты будешь платить за всё подряд всем подряд и сам будешь понимать, что ты дурак, что упустил все свои возможности для обучения, и теперь из-за этого ты должен всем за всё платить, потому что никто бесплатно делать тебе ничего не будет.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB