Написати функцію, f
яка приймає додатне ціле число і повертає функцію.
Нова повернута функція повинна бути ідентичною f
. Однак, коли "виклик припинення" відбувається,f
замість цього слід повернути суму всіх пропущених цілих чисел.
Наприклад, g=f(4)
(якщо f
це перша функція) слід встановити g
іншу функцію. h=g(3)
зробимо те саме. Однак, якщо ви телефонуєте h
без аргументів (детальніше див. Нижче), він повинен вивести 7, оскільки це сума попередніх аргументів функції. Іншими словами, f(3)(4)() == 7
.
Зверніть увагу, це не те саме, що f(3,4)()
.
"Виклик припинення" - це один із наступних варіантів (на ваш вибір):
- викликати без аргументів
- null як аргумент
- будь-яке непозитивне значення
Довільна кількість функціональних викликів повинна підтримуватися, заздалегідь не визначений ліміт.
Гарантується, що загальна сума не буде більше 1 000.
Можна припустити, що щонайменше один дзвінок проводиться до "виклику припинення".
Ваш код не повинен використовувати статичні змінні за програмою, тому слід мати можливість запускати експеримент кілька разів за один і той же час виконання та спостерігати точно таку ж поведінку.
Приклади:
f(1)() == 1
f(4)(2)(7)() == 13
f(4)(2)(7)(5)(2)() == 20
q = f(2)(3); b = f(1)(2)(3); q(); b()
?
f(4)
повертає нову функцію. Якщо ця нова функція викликається без аргументів, вона повертається4
, але якщо вона викликається з іншим аргументом, вона знову поверне нову функцію з тією ж семантикою, але з новим аргументом, доданим до4
і так далі.