Shull
@Shull
хочу быть хорошим IT-шником

Почему такое странное поведение переменной после рекурсии?

Вот тут было всё нормально:
def test(mass):
    print("До рекурсии:",mass)
    
    if mass==1: return
    mass=mass-1
    test(mass)
    
    print("после рекурсии:",mass)
    
    
test(4)


Но почему тут такой бардак?
def test(mass):
    print("До рекурсии:",mass)
    
    if len(mass)==1: return
    del mass[0]
    test(mass)
    
    print("после рекурсии:",mass)
    
    
test([4,3,2,1])


Бьюсь уже несколько часов :-(
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
0xD34F
@0xD34F
Потому что при передаче списка в качестве параметра копируется не он сам, а ссылка на него. При рекурсивном вызове вместо mass передавайте mass.copy().
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Вы передаете один и тот же список, из него удаляются элементы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 11:11
10000 руб./за проект
29 мар. 2024, в 10:00
10000 руб./за проект
29 мар. 2024, в 09:59
750 руб./в час