0
Рекурсия
https://sololearn.com/coach/167/?ref=app Может кто нибудь объяснить как оно здесь работает ? Решить то решил, но почему именно так return list[0]**2 + calc(list[1:])
1 Antwort
0
Если ещё актуально, выложи код. Это задание не видно тем, у кого нет PRO аккаунта.
На сколько я понимаю это получение суммы квадратов всех элементов списка?
В начале берётся первый элемент списка и возводится в квадрат
list[0]**2 ждёт, что к ней добавится результат вызова функции с тем же списком, но начиная со второго элемента list[1:]. При этом вызове происходит тоже самое - из списка берётся первый элемент, возводится в степень и ожидает результат вызова функции со списком уже без первых двух элементов и так, пока список не закончится. Видимо есть условие прерывания что-то вроде if not list: return 0. После этого происходит складывание всех элементов. Т.е. получается что-то типа такого:
list[0]**2 + (list[1]**2 + (list[2]**2 +(.... +0)))))
В этом кроется проблема рекурсии - можно тупо не дождаться закрытия последней скобки