42 Рекурсия в Python. Рекурсивная функция Часть 2

Поделиться
HTML-код
  • Опубликовано: 5 янв 2025

Комментарии • 262

  • @egoroffchannel
    @egoroffchannel  4 года назад +4

    Стать спонсором
    ruclips.net/channel/UCMcC_43zGHttf9bY-xJOTwAjoin
    Стать патроном
    www.patreon.com/artem_egorov

  • @ЯрославПаксюткин-э2ю

    Контент не соответствует с просмотрами. Ты достоин лучшего

    • @egoroffchannel
      @egoroffchannel  6 лет назад +17

      спасибо, надеюсь в плане просмотров все будет меняться в лучшую сторону)

    • @erickostandyan8977
      @erickostandyan8977 3 года назад +1

      Согласен)

    • @rango7806
      @rango7806 3 года назад +1

      Это по подписке, поэтому не соответствует

  • @dronikandronik
    @dronikandronik 5 лет назад +53

    Это лучший плейлист по изучению питона! Столько тем, и при этом каждой уделяется нужное количество времени!) Спасибо)

  • @sergeyblack6381
    @sergeyblack6381 2 года назад +22

    Взял себе в привычку после просмотра урока на платных курсах, смотреть эту же тему тут, становится гораздо понятнее, спасибо огромное автору!

    • @kst5161
      @kst5161 Год назад +3

      Остается исключить лишний элемент)

    • @MilcFord
      @MilcFord 6 месяцев назад

      Также делаю, прохожу курс на Hexlet, а потом смотрю видео здесь.

  • @Indi8692
    @Indi8692 4 года назад +3

    Самый лучший и понятный канал на Ютубе!! Спасибо!

  • @sjotik
    @sjotik 2 года назад +6

    А вот эта логика с обходом многоуровнево-вложенных списков очень крута. Большое спасибо!! Всех благ!

  • @heybeachMIN
    @heybeachMIN Год назад +2

    Ролик понравился, спасибо! Стало чуть понятней в теме 'Рекурсия' :)

  • @ec10nr34
    @ec10nr34 6 лет назад +9

    Спасибо! Каналу желаю удачи.

  • @stanislavdusiak9007
    @stanislavdusiak9007 4 года назад +10

    Действительно... крайне качественный контент, я ну оооочень долго и много перерыл курсов пока не нашел именно этот, странно, что просмотров нет........... Артем, запили видосы по классам пожалуйста.

    • @egoroffchannel
      @egoroffchannel  4 года назад +2

      Спасибо, видимо ещё не все знают о существовании моего канала

  • @MaksimSukhodolov
    @MaksimSukhodolov 2 года назад +4

    Спасибо за столь простое объяснение непростой темы(для меня).

  • @Саша-п1г6й
    @Саша-п1г6й 6 месяцев назад

    Спасибо Егор, Вы очень талантливый учитель, все внятно

  • @Bylat1
    @Bylat1 2 года назад +14

    Задача с таймтега 6:00
    def f(x):
    if len(x)==0:
    return x
    if x[0]=='(':
    return x[0] + f(x[1:]) + ')'
    return x[0] + f(x[1:]) + x[0]
    x=input()
    print(f(x))
    не знаю как, но работает)

    • @haydarshoh-sh
      @haydarshoh-sh Год назад +1

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

    • @ДаниярКаримов-о6н
      @ДаниярКаримов-о6н Месяц назад

      понравилось твое решение , но когда вводишь например ac((sd то выходит так ac((sds))ca хотя как я понял d должно быть двое вот так ac((sdds))ca

  • @He1LBoy34
    @He1LBoy34 6 лет назад +4

    Спасибо за новый урок!

  • @БлезПаскаль-э6р
    @БлезПаскаль-э6р Год назад +6

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

  • @dima2y5
    @dima2y5 10 месяцев назад +2

    вот так решил вторую задачу со скобочками
    def rev(s):
    if len(s) == 0:
    return s
    else:
    if s[0] == '(':
    return s[0] + rev(s[1:]) + ')'
    return s[0] + rev(s[1:]) + s[0]

  • @elfate-fb5ux
    @elfate-fb5ux 2 года назад +2

    Очень наглядно и понятно, спасибо!

  • @ИринаПотёмкина-ш1л
    @ИринаПотёмкина-ш1л 2 года назад +2

    Спасибо!!! Всё грамотно и подробно!!! наконец то я всё поняла!!!! ))))

  • @nervoussystem6001
    @nervoussystem6001 5 лет назад +2

    Так пойдёт вторая задача со скобочками:
    stroka = input('enter the string:')
    def f(stroka):
    if len(stroka) == 0:
    return
    print(stroka[0],end='')
    f(stroka[1:])
    if stroka[0] == '(':
    print(')',end='')
    else:
    print(stroka[0],end='')
    f(stroka)
    Сгодится на ваш взгляд,спасибо

  • @АлександрСемененко-э9ы

    Спасибо, классный курс!

  • @MrKravetz
    @MrKravetz 2 года назад

    Лучшие уроки по питону на Ютубе.

  • @yatanai5685
    @yatanai5685 3 года назад +1

    Благодарности нет границ!

  • @user-uq2nl9bt8b
    @user-uq2nl9bt8b 5 лет назад +3

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

  • @inconstancy
    @inconstancy 4 года назад

    Вот ещё один способ решения задачи на возведение в степень с использованием рекурсии (без проверки на чётность степени). Просто умножаем число на само себя n - 1 количество раз:
    def power(x, n):
    if n < 0:
    return 1 / power(x, -n)
    if n == 0:
    return 1
    return x * power(x, n - 1)
    x, n = map(int, input().split())
    print(power(x, n))
    Но, несомненно, алгоритм, который вы описали в видео, будет работать быстрее, так как будет меньше рекурентных вызовов функции. И чем больше степень, тем ваш алгоритм будет работать быстрее по сравнению с вышеуказанным. Спасибо за отличную подачу материала)

  • @denistalko6585
    @denistalko6585 2 года назад +4

    Спасибо за столь прекрасное объяснение сложной темы!

  • @sajkevegan941
    @sajkevegan941 11 месяцев назад

    Спасибо, хорошо объясняете

  • @Vlamir_ave_tonna
    @Vlamir_ave_tonna Год назад

    Чувак конент в кайф! Жги ещё!

  • @galinaoliver5624
    @galinaoliver5624 Год назад +3

    Очень сложно, но интересно!

  • @user-evgeniy64
    @user-evgeniy64 4 года назад +6

    Все мозги разбил на части, все извилины заплел))))

  • @neopoligraf9991
    @neopoligraf9991 4 года назад +1

    Спасибо за видео! Все отлично рассказано.

  • @НадеждаПолетаева-н9ь
    @НадеждаПолетаева-н9ь 4 года назад +6

    Спасибо большое за уроки! Всё доступным и понятным языком. Узнала много полезного.
    Уточните пожалуйста в примере с возведением в степень: power (x,n) через запятую, как программа распознает, что это именно возведение в степень?

    • @АртёмСахаров-у5н
      @АртёмСахаров-у5н 4 года назад +3

      Задался этим вопросом и опечалился, когда увидел, что Ваш комментарий без ответа. Поэтому всем, у кого возник этот вопрос: распишите себе весь процесс на бумаге и увидите, что сам интерпретатор не в курсе, что здесь заложена операция возведения в степень, он просто выполняет умножение, согласно прописанным условиям.

  • @Dmitrii-Zhinzhilov
    @Dmitrii-Zhinzhilov 2 года назад

    Артём, благодарю! 👍🔥🔥🔥

  • @cocojabaa
    @cocojabaa Год назад

    Вот мой вариант решения задачи с тайм кода 10:10
    def zadacha3(n, count=0):
    if len(str(n)) == 1:
    return n, count
    return zadacha3(n = sum((int(i) for i in list(str(n)))), count=count+1)
    print(zadacha3(99))
    Вывод: (9, 2)
    Строка где возвращается рекурсия скорее всего тяжело читается, но сделал как сделал, главное что работает

  • @Pseudonayme
    @Pseudonayme 6 месяцев назад

    Я удивлен. Спасибо вам.

  • @sergeismazheluk1662
    @sergeismazheluk1662 5 лет назад +1

    видосик шикарный!!!! СПАСИБО большое

  • @НиколайМануилов-и1д
    @НиколайМануилов-и1д 3 года назад +1

    Хорошая обучалка, хоть рекурсию более менее закрепил, а то применить никак ее не мог

  • @СабинаСабирова-з7в
    @СабинаСабирова-з7в 3 года назад +3

    Спасибо, Артем!! Надеюсь, с твоими уроками освою эту сложную тему.
    Решение задачи с зеркальными скобками
    def rec(s):
    if len(s)==0:
    return s
    if s[len(s)-1]=='(':
    s+=')'
    if s[len(s)-1].isalpha():
    s+=s[len(s)-1]
    return s[len(s)-2] + rec(s[0:-2]) + s[len(s)-1]
    PS: честно, я почти сдалась, но решение пришло. правильное ли?

  • @ИванВалерьевич-ч4и
    @ИванВалерьевич-ч4и 3 года назад

    def num(x,ch1=0):
    if x

  • @felixcriminibusnulluseritd7315
    @felixcriminibusnulluseritd7315 2 года назад

    Автор очень круто и понятно изложен материал, с кучей примеров что очень важно обязательно будет донат от меня

  • @artem_garyanov
    @artem_garyanov 3 года назад +1

    Коммент для продвижения канала и безграничная благодарность Вам!

  • @varyachekhovidova5794
    @varyachekhovidova5794 Год назад

    нумеролог
    def recursive_sum(n, s=0):
    return s + n if n < 10 else recursive_sum(n // 10, s + n % 10)
    def numerolog(n, level=0):
    print(n, level) if n < 10 else numerolog(recursive_sum(n), level+1)
    можно и через встроенный sum, но решила использовать рекурсию по максимуму вместо итерации)

  • @galinaoliver5624
    @galinaoliver5624 Год назад

    Огромное спасибо. Подарок

  • @iglstivens
    @iglstivens 3 года назад +2

    Я что то не совсем понимаю, в задаче из видио когда возводили число в степень, где тот момент когда мы пишем x**n?

  • @makseo651
    @makseo651 10 месяцев назад

    Большое спасибо!!

  • @Bylat1
    @Bylat1 2 года назад +1

    Нумеролог
    x = int(input())
    def f(x, y=0):
    if x

  • @adilkhanarts21
    @adilkhanarts21 Год назад

    zada4a numerolog:
    n = input()
    c = 0
    def f(n):
    global c
    if (len(n) == 1):
    return n
    c+=1
    return f(str(sum(map(int, list(n)))))
    print(f(n), c)

  • @БагашканАлимбек
    @БагашканАлимбек 4 года назад +1

    Спасибо большое

  • @user-nd9do2nk2j
    @user-nd9do2nk2j 2 года назад

    в первом задании если с внешними скобочками, то вот так можно сделать:
    def brackets(s):
    if len(s)

  • @kdjdjwjsvejwkdbs4351
    @kdjdjwjsvejwkdbs4351 Год назад

    Понятно и интересно.

  • @abs77777
    @abs77777 8 месяцев назад

    это гениально

  • @madjim9790
    @madjim9790 11 месяцев назад

    1 задача про зеркальность:
    def rec(s):
    if len(s) == 1:
    return s + s
    return s[0] + rec(s[1:]) + s[0]
    2 задача про нумерологию:
    def rec(x, n = 0):
    if len(str(x)) == 1:
    return x, n
    return rec(sum(list(map(int, str(x).strip()))), n + 1)
    x = int(input())
    print(*rec(x))
    начинаю лучше разбираться в рекурсиях, тема тяжеловатая

  • @husam8204
    @husam8204 8 месяцев назад

    Блин, ну доходчиво же. Спс

  • @ПлатонТрипуть
    @ПлатонТрипуть Год назад

    Ура , работает:
    def rec(str):
    if len(str)==1 or len(str)==2 or '(' not in str:
    return str
    return str[0:str.index('(')] + '(' + rec(str[str.index('(') + 1:]) + ')' + str[0:str.find('(')[::-1]

  • @АлександрВолков-й6х8к

    Отдельное спасибо за практические задания, учил рекурсию по другим лекциям, без практики было не все понятно, сейчас вроде разобрался окончательно
    задача 2:
    def rec(x):
    if len(x)==1:
    if x!="(":
    return x+x
    return "()"
    if x[0]!="(":
    return x[0]+ rec(x[1:])+x[0]
    return "(" + rec(x[1:])+ ")"
    x=input()
    print(rec(x))

  • @maksimgerasimenko4287
    @maksimgerasimenko4287 5 лет назад +1

    Спасибо!

  • @ПлатонТрипуть
    @ПлатонТрипуть Год назад +2

    В примере состепенью числа можно было не идти до 0 степени , а остановиться на 1 , так быстрее будет

  • @annk6637
    @annk6637 3 года назад

    def numerolog2(n, count2=0):
    n = sum([int(i) for i in list(str(n))])
    if len(str(n)) > 1:
    return numerolog2(n, count2+1)
    return n, count2+1

  • @SemyonMazepin
    @SemyonMazepin Год назад

    4:10 почему начальная буква берется с индексом 0 и в рекурсии мы берём индекс 1 а конечная что в возврате -1 что в рекурсии -1. Не должно ли -2 быть в срезе?

  • @sosrebet1337
    @sosrebet1337 2 года назад +1

    Решение задачи "Нумеролог"
    a = int(input())
    def rec(x, counter=0):
    s = 0
    if x < 10:
    return x, counter
    for i in str(x):
    s += int(i)
    counter += 1
    if s > 9:
    return rec(s, counter == 1)
    return s, counter
    print(*rec(a))

    • @yevhenbaklahov193
      @yevhenbaklahov193 2 года назад

      я так понял смысл рекурсии - уйти от циклов, а у Вас вышла рекурсия с циклом ))) ... хотя у меня и это не получилось.
      Вот, все что смог, сумма цифр считается, но не пойму как в рекурсию счетчик засунуть (чтоб без цикла). Если кто подскажет, буду благодарен
      def numerolog(n:int):
      if n

    • @vonravik2012
      @vonravik2012 2 года назад

      @@yevhenbaklahov193 count += len(str(number)) - 1

  • @sanek711
    @sanek711 Год назад

    Задача со скобками:
    def rec(s):
    return s + s[::-1].replace('(', ')')
    Задача с нумерологом:
    def numerolog(n):
    return n if n < 10 else numerolog(sum(list(map(int, list(str(n))))))

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      тут про рекурсию, а не про возможности питона )

    • @sanek711
      @sanek711 Год назад

      @@Дмитрий-т4л9ъ с нумерологом как раз рекурсия

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      @@sanek711 да, согласен, не внимательно сначала посмотрел

  • @НиколайМануилов-и1д

    ДЗ, не знаю куда нужно было скидывать, кидаю и сюда тоже
    Нумеролог:
    with open ('INPUT.TXT') - as inf:
    number=inf.radline()
    count=0
    def numerolog(number,count):
    summa=0
    if number

  • @golokwen7622
    @golokwen7622 Год назад

    задача на 6:05
    class Mirror_Rec():
    def mirror(self, word):
    lst = []
    count = -1
    for i in word:
    lst.append(word[count])
    count -= 1
    lst = list(lst)
    return ''.join(lst)
    @classmethod
    def recursion(cls, funk):
    if len(funk) == 0 or len(funk) == 2 or len(funk) == 1:
    return funk
    return funk[0] + cls.recursion(funk[1:-1].replace('(', ')')) + funk[-1].replace('(', ')') # return a)m)a)m)
    a = Mirror_Rec()
    b = a.mirror('(m(a(m(a')
    print(b + a.recursion(b))

  • @vafli3084
    @vafli3084 2 года назад +1

    Решения задач со строками:
    1. Звездочки
    def rec_stars(s):
    if len(s) == 1:
    return s
    else:
    return s[0] + '*' + rec_stars(s[1:])
    2. Отзеркалить строку и развернуть кавычки
    def rec_mirror(s):
    if len(s) == 1:
    return s if s != '(' else ')'
    else:
    return s[-1] + rec_mirror(s[:-1]) if s[-1] != '(' else ')' + rec_mirror(s[:-1])

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      там не просто отзеркалить надо, а сконкатенировать с входной строкой )

  • @everythingforyoutube4031
    @everythingforyoutube4031 Год назад +2

    Задача: Нумеролог. Я старался применить и рекурсию с вложенные функции. Спасибо автор!!!
    def asum(a):
    b = 0
    for i in str(a):
    b += int(i)
    return b
    def text(a, count=0):
    if a < 10:
    return f'{a} {count}'
    return text(asum(a), count + 1)
    print(text(int(input())))

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      применил цикл for, а значит уже не чистая рекурсия )

    • @heybeachMIN
      @heybeachMIN Год назад

      @@Дмитрий-т4л9ъ а как по другому решить то?

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      @heybeachMIN ну я так решил, чуть проще, без циклов. Видел в другом комменте у вас такое же решение было.
      def q(a, c = 0):
      if a

    • @heybeachMIN
      @heybeachMIN Год назад +1

      @@Дмитрий-т4л9ъ да я потом сам подумал и нашел решение) но сначало казалось что без for никак ) спасибо за Ваше решение

  • @магомедтохчуков-ы3б

    спасибо

  • @skorw1softs
    @skorw1softs Год назад

    задача про скобки:
    def rec(a: str):
    if len(a)

  • @joudjitcu
    @joudjitcu Год назад

    ЗАДАЧА "звёздочки"
    def rec(s):
    if len(s) == 1:
    return s
    if len(s) == 2:
    return s[0] + '*' + s[1]
    if len(s)

  • @vrotkat7813
    @vrotkat7813 2 года назад +2

    Нумеролог
    c=0
    def q(a):
    global c
    if a

    • @evgeniy_epov
      @evgeniy_epov 2 года назад +1

      лучшее решение, так и не смог к нему прийти

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      чуть лучше наверное так, как Артем показывал с уровнями, чтоб без глобальных переменных, а в целом действительно лучшее решение на чистой рекурсии:
      def q(a, c = 0):
      if a

  • @COMBINATORS
    @COMBINATORS 4 года назад

    Нумеролог:
    n=input()
    def numerolog(n,count=1,summ=0):
    if len(str(n))==1:
    return int(n),0
    for i in (str(n)):
    summ+=int(i)
    if len(str(summ))!=1:
    return numerolog(summ,count+1,0)
    return summ,count
    print(*numerolog(n))

  • @galinaoliver5624
    @galinaoliver5624 Год назад

    #добавить зеркальную строку
    def skobka(y):
    if y == '(':
    return ')'
    return y
    def mirror(s):
    if len(s) < 2:
    return skobka(s)
    return mirror(s[1:]) + skobka(s[0])
    s = input()
    print(mirror(s))

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      по заданию нужна была исходная + зеркальная )

  • @eazy8537
    @eazy8537 Год назад +1

    Нумеролог:
    def st(x, c=0):
    return (x, c) if x < 10 else st(sum([int(i) for i in str(x)]), c+1)

    • @Дмитрий-т4л9ъ
      @Дмитрий-т4л9ъ Год назад

      цикл for остался ) а значит это не рекурсия

    • @heybeachMIN
      @heybeachMIN Год назад

      если хочется максимально коротко и с рекурсией то лучше уже такое
      def text(a, count=0):
      return f'{a} {count}' if a < 10 else text(a // 10 + a % 10, count + 1)

  • @shocko3794
    @shocko3794 11 месяцев назад

    Почему в данном случае не выводится None, когда мы не используем return?

  • @user-qk1wc5wg3v
    @user-qk1wc5wg3v 12 дней назад

    Немного не понял, почему выдает ошибку в таких случаях?
    def rec(x)
    return x[0] + rec (x[1:]) + x[0]
    x = input()
    print (rec (x))

  • @ArtyomRolei
    @ArtyomRolei 3 года назад

    # Вставить звёздочки:
    def rec(s_local):
    if len(s_local) > 1:
    return s_local[0] + "*" + rec(s_local[1:])
    return s_local
    s = input()
    print(rec(s))
    # Сформировать новую строку со скобками:
    def rec(s_local):
    if len(s_local) > 0:
    char = s_local[-1]
    if char == '(':
    char = ')'
    return char + rec(s_local[:-1])
    return ""
    s = input()
    print(s + rec(s))
    # Нумеролог:
    def rec(num_local, iterations=0):
    if num_local >= 10:
    digits = list(str(num_local))
    for i in range(len(digits)):
    digits[i] = int(digits[i])
    return rec(sum(digits), iterations + 1)
    return num_local, iterations
    num = int(input())
    print(*rec(num))

    • @bagkir718
      @bagkir718 2 года назад

      а зачем во второй задаче 'return ""'?

  • @Дмитрий-т4л9ъ
    @Дмитрий-т4л9ъ Год назад

    задача на текст + зеркальное отображение без спец.методов пайтона(у многих только "зеркало" возвращало):
    def concat_revers(txt):
    if txt[0] == '(':
    mirror_sym = ')'
    elif txt[0] == ')':
    mirror_sym = '('
    else:
    mirror_sym = txt[0]
    if len(txt) == 1:
    return txt+mirror_sym
    else:
    return f'{txt[0]}{concat_revers(txt[1:])}{mirror_sym}'

  • @dvlpsuccess7289
    @dvlpsuccess7289 Год назад

    вот ответ
    ask = input()
    askl = len(ask)
    nf = 1
    def ft (x):
    global nf
    if nf < askl:
    aqwe = (ask[nf]+'*')
    nf = nf+1
    print(aqwe, end='')
    ft(x)
    ft(ask)

  • @vvnbel
    @vvnbel 4 года назад +1

    Подскажите, в этой строчке: return power(x, n//2) * power(x, n//2) - как так получается, что один аргумент - это степень, а другой - это число, почему одно возводится в другое, где инструкция чтобы икс возводился в степень n?

    • @egoroffchannel
      @egoroffchannel  4 года назад

      мы сами определяем кто степень, а кто число

    • @vvnbel
      @vvnbel 4 года назад

      @@egoroffchannel окей, с этим ответом мне жить)

  • @Ilinium1
    @Ilinium1 5 лет назад +1

    На ответ со скобками я сделал так:
    def copyrit(s):
    if len(s)

  • @JohnotanDoe
    @JohnotanDoe 5 лет назад +1

    Годно, пора продавать на степике итд

  • @ЕкатеринаЧолак
    @ЕкатеринаЧолак 3 года назад

    Добрый день, Артём. Не совсем поняла решение задачи по возведению в степень.
    Стараюсь перед вашим объяснением порешать сама и у меня получился вот такой вариант:
    def power(x,n):
    if n==1:
    return x
    if n==0:
    return 1
    if n

  • @denislukanin347
    @denislukanin347 5 лет назад

    Задачка про нумеролога)
    def predskazanie(a,Level=0):
    if len(a)==1:
    return int(a) , Level
    else:
    s=0
    for i in range(len(a)):
    s+=int(a[i])
    a=str(s)
    return predskazanie(a, Level+1)
    a=input()
    print(*predskazanie(a))

    • @user-evgeniy64
      @user-evgeniy64 4 года назад

      Чувак, ты бы знал каким садо мазо я занимался, чтобы распаковать кортеж, до того как увидел, что можно так сделать
      print(*predskazanie(a))

  • @СергейКарманович-х4ю

    def life(x, count=0):
    x = eval('+'.join([i for i in str(x)]))
    if len(str(x)) == 1:
    return x, count+1
    return life(x, count+1)

    • @DoktorZlo96
      @DoktorZlo96 5 лет назад

      уже близко, но не правильно

  • @unidentified386
    @unidentified386 2 года назад

    Нашел более короткое решение задачи со степенью:
    def recursivepower(x,n):
    if n == 1:
    return x
    if n == 0:
    return 1
    return x * power(x,n-1)

  • @crackheadokejo3683
    @crackheadokejo3683 3 года назад

    Код для 2 задачи
    def rec(string):
    if len(string) == 1 and string[0] != '(': return string
    elif len(string) == 1 : return ')'
    if string[-1] != "(" :
    return string[-1] + rec(string[:-1])
    else:
    return ")" + rec(string[:-1])
    s = input()
    print(s+rec(s))

    • @crackheadokejo3683
      @crackheadokejo3683 3 года назад

      по-моему не особо рекурсивно получилось , но что смог

  • @Ilinium1
    @Ilinium1 5 лет назад

    вот с номерами помучился, но:
    count = 0
    def numerolog2(*a):
    try:
    n = list(a[0])
    except TypeError:
    n = [a[0], 0]
    if n[0] // 10 == 0:
    return n
    if n[0] // 10 != 0:
    counter()
    return [numerolog2([(n[0] % 10) + numerolog2([n[0] // 10, n[1]])[0], n[1]])[0] , count]
    def counter():
    global count
    count += 1;

  • @sharpd1173
    @sharpd1173 4 года назад +1

    Дз (тем, кто не смог) про отзеркаливание
    Два варианта алгоритма
    def z1(s,l=''):
    if len(s)==0:
    return l
    if s[-1]=='(':
    l='('+l+')'
    else:
    l=s[-1]+l+s[-1]
    return z1(s[:-1],l)
    def z2(s):
    if len(s)==0:
    return s
    if s[0]=='(':
    return '('+z2(s[1:])+')'
    return s[0]+z2(s[1:])+s[0]
    print(z2('qw(w('))

  • @egoroffchannel
    @egoroffchannel  7 месяцев назад +1

    🫵 Теория без практики - ничто, поэтому 👇
    🐍 stepik.org/course/63085/promo
    👉 специально для тебя создал бесплатный топовый курс по Python
    👉 В нем тебя ждет:
    📗 более 400 практических заданий на программирование
    📗 более 250 тестовых заданий на проверку материала
    📗 десятки часов видеоматерилов по теории
    📗 видеоразборы решения заданий
    📗 текстовые материалы по урокам, примеры кода
    📗 доступ к закрытому чату с дружественной обстановкой
    📗 сертификат в случае успешного прохождения курса

  • @nto2503
    @nto2503 4 года назад

    Подскажите, пожалуйста, как решается задача А (прибавить 3, прибавить 5)?

  • @enjoyyourlife5067
    @enjoyyourlife5067 Год назад

    def mirror(s):
    return s + s[::-1].replace('(', ')')
    вроде работает :)

  • @Lord_MarshaL
    @Lord_MarshaL 2 года назад

    молодец

  • @bazelit
    @bazelit 2 года назад +2

    Задача 6:00
    def rec(s):
    a = s[::-1]
    return s + a.replace('(', ')')
    s = input()
    print(rec(s))

    • @ВероникаР-ю9ш
      @ВероникаР-ю9ш Год назад

      я почти также решила )
      in_data = "(((t((p((y((kx((((e(((((((vw((v(e((v(m(((h(mlx((s((((d(y((((((((mtk(d(umi((s((sx(p((m(r((kq"
      def rec_2(sent):
      return sent + sent.replace('(', ')')
      print(rec_2(in_data))

  • @ImVladdy
    @ImVladdy 4 года назад

    Артем, как ты думаешь это оптимальное решение или можно лучше? :
    def numerolog(s,count=0):
    if len(s) == 1:
    return s,count
    return numerolog(s=str(sum([int(i) for i in s])), count=count+1)
    print(numerolog(input()))

  • @CoolMatthew851
    @CoolMatthew851 5 лет назад

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

  • @user-evgeniy64
    @user-evgeniy64 4 года назад

    Задачка №3
    Сайт решение принял, но я не понял, как в функцию запихать саму строку.
    У меня выводит только "отзеракаленную" копию.
    Пришлось в принт запихать конкатенацию изначальной строки и ее копии
    Комрады, подскажите, может кто изящнее решил?
    def rec(s):
    if len(s) == 0: # Выход из рекурсии
    return s
    # Отщипываем первый символ и плюсуем его же
    return rec(s[1:]) + s[0].replace('(', ')')
    s = input()
    print(s+rec(s))

  • @ЕвгенийПоловинский-в6у

    Артем, спасибо большое за уроки.
    Подскажи, плз., для чего использовался 'pass' ? Какова его функция?

    • @egoroffchannel
      @egoroffchannel  4 года назад

      такие конструкции как if while for def должны содержать в себе блок команд на отступах после двоеточия. Этот блок не может быть пустым, то есть обязан состоять хотя бы из одной строчки. Иногда нужно оставить блок пустым(без каких либо действий), и вот для этого нужен pass. pass - пустой блок

    • @ЕвгенийПоловинский-в6у
      @ЕвгенийПоловинский-в6у 4 года назад

      @@egoroffchannel Большое спасибо.

  • @MoronicSoul
    @MoronicSoul 2 года назад

    ох как же я подвис на рекурсии с возведением в степень... помог отладчик в visualstudio, хоть он и не особо информативный

  • @ИльяСуменков-г1ч
    @ИльяСуменков-г1ч 2 года назад

    Здравствуйте! Объясните пожалуйста как решается задача "Нумеролог"

  • @shlm3650
    @shlm3650 5 лет назад

    Здравствуйте! Отличное объяснение, хотелось бы получить на счёт т.н. хвостатых рекурсий. И ещё как в рекурсии не получая пустой список как аргумент, объявить его чтобы он был объявлен не рекурсивно?

  • @moisad1
    @moisad1 3 года назад

    при определенной длине строки выдает ошибку не пойму почему
    def zvez(a):
    if len(a) == 1:
    return a
    return a[0] + "*" + zvez(a[1: -1]) + "*" + a[-1]
    a = "LItBeoFLcSGBOFQxMHoIuDDWcqcVgkcRoAeocX"
    print(zvez(a))
    ошибка:
    return a[0] + "*" + zvez(a[1: -1]) + "*" + a[-1]
    [Previous line repeated 17 more times]
    IndexError: string index out of range

    • @madishkashishka
      @madishkashishka 2 года назад

      def zvez(a):
      if len(a) == 1 or len(a) ==2:
      return a
      return a[0] +"*"+zvez(a[1:-1])+"*"+ a[-1]
      a = "LItBeoFLcSGBOFQxMHoIuDDWcqcVgkcRoAeocX"
      print(zvez(a))

  • @MrMirror369
    @MrMirror369 Год назад

    Вы проделали, конечно, большую работу и спасибо Вам за это. Но, как все это запомнить.. м. б. есть какие то методы? С первого раза запоминается очень обобщённо.

    • @egoroffchannel
      @egoroffchannel  Год назад +1

      С помощью практики на моем бесплатном курсе
      stepik.org/course/63085/promo

  • @vvnbel
    @vvnbel 4 года назад

    def power(x,n)
    вопрос - почему n идёт как степень числа x исходя из этой записи?
    К примеру есть функция pow, которая импортируется из math - там аргументы передаются как раз таким образом, но это ведь 2 разные функции - в одном случае та что мы сами пытаемся сделать, а во втором готовая встроенная

    • @egoroffchannel
      @egoroffchannel  4 года назад

      Можно параметры функции располагать в любом порядке, значит функцию можно было определить как def power(n,x)
      Затем, какой параметр является числом, а какой степенью определяешь только ты сам, но после того как определил и вызывать тогда ты должен соответствующе и одинаково всегда
      И еще, эти параметры можно называть как хочешь, например def power(chislo,stepen) и вот тогда уже точно будет понятно, кто есть кто

    • @vvnbel
      @vvnbel 4 года назад +4

      @@egoroffchannel спасибо за ответ) саму физику процесса еще не понял, например в этой строчке: return funk(x, n//2) * funk(x, n//2) - как так получается, что один аргумент - это степень, а другой - это число, почему одно возводится в другое, где инструкция чтобы икс возводился в степень n?