Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
func sum(_ n: Int) -> Int {
if n == 1 {
return 1
}
return n + sum(n - 1)
}
print(sum(4))10
- Ждать
4, считая, что все вызовы делят одноn. Каждый вызов получает свою копиюn, поэтому после возвратаsum(3)вызовsum(4)прибавляет именно4. - Ждать
1, считая, что значение базового случая сразу попадает вprint.sum(1)возвращается вsum(2), и каждый вызов на обратном пути прибавляет своёn.
- Что случится при вызове
sum(0)с этой функцией и как это исправить? - Как записать ту же сумму циклом вместо рекурсии?