Bir fonksiyonu, yaz f
pozitif tamsayı alır ve bir işlev döndürür.
Döndürülen yeni işlev aynı olmalıdır f
. Ancak, "sonlandırma çağrısı" gerçekleştiğinde, f
bunun yerine geçen tüm tam sayıların toplamını döndürmelidir.
Örneğin, g=f(4)
( f
ilk işlev ise) g
başka bir işleve ayarlanmalıdır . h=g(3)
aynısını yapacağım. Bununla birlikte, h
hiçbir argüman olmadan aradığınızda (ayrıntılar için aşağıya bakınız), önceki 7 fonksiyon argümanının toplamı olduğu gibi 7 değerini çıkarmalıdır. Başka bir yolla f(3)(4)() == 7
.
Bunun aynı olmadığını unutmayın f(3,4)()
.
"Sonlandırma çağrısı" aşağıdaki seçeneklerden biridir (seçiminiz):
- w / o argümanını çağır
- argüman olarak null
- pozitif olmayan herhangi bir değer
İsteğe bağlı işlev çağrısı miktarı desteklenmelidir, önceden tanımlanmış bir sınır yoktur.
Toplam tutarın 1'000'den büyük olmayacağı garanti edilmektedir.
"Fesih çağrısı" öncesinde en az bir çağrı yapıldığını varsayabiliriz.
Kodunuz statik, program başına değişken kullanmamalı, bu nedenle deneyi aynı çalışma zamanında birden çok kez çalıştırmak ve tamamen aynı davranışı gözlemlemek mümkün olmalıdır.
Örnekler:
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)
yeni bir işlev döndürür. Eğer bu yeni fonksiyon argümanlar olmadan çağrılırsa, döndürür4
, fakat eğer başka bir argüman ile çağrılırsa , aynı semantikte fakat yeni argümanlara eklenmiş vb. İle tekrar yeni bir fonksiyon döndürür4
.