importPackage(java.io);
importPackage(java.lang);
function sumTo(n){
if (n > 1){
return n + sumTo(n-1)
} else {
return n
}
}
print(sumTo(4))
function sumToFourExplained(n){
// n = 4
if (n > 1){ // n = 4
return n + (function(m){
if (m > 1){ // m = 3
return m + (function(k){
if (k > 1){ // k = 2
return k + (function(l){
if (l > 1){ // l = 1
return l // + func... and so on
} else {
return l
}
})(k-1) // l = k - 1 = 1
} else {
return k
}
})(m-1) // k = m - 1 = 2
} else {
return n
}
})(n-1) // m = n - 1 = 3
} else {
return n
}
}
print(sumToFourExplained(4))
aW1wb3J0UGFja2FnZShqYXZhLmlvKTsKaW1wb3J0UGFja2FnZShqYXZhLmxhbmcpOwoKZnVuY3Rpb24gc3VtVG8obil7CglpZiAobiA+IDEpewoJCXJldHVybiBuICsgc3VtVG8obi0xKQoJfSBlbHNlIHsKCQlyZXR1cm4gbgoJfQp9CgpwcmludChzdW1Ubyg0KSkKCmZ1bmN0aW9uIHN1bVRvRm91ckV4cGxhaW5lZChuKXsKCS8vIG4gPSA0CglpZiAobiA+IDEpeyAvLyBuID0gNAoJCXJldHVybiBuICsgKGZ1bmN0aW9uKG0pewoJCQlpZiAobSA+IDEpeyAvLyBtID0gMwoJCQkJcmV0dXJuIG0gKyAoZnVuY3Rpb24oayl7CgkJCQkJaWYgKGsgPiAxKXsgLy8gayA9IDIKCQkJCQkJcmV0dXJuIGsgKyAoZnVuY3Rpb24obCl7CgkJCQkJCQlpZiAobCA+IDEpeyAvLyBsID0gMQoJCQkJCQkJCXJldHVybiBsIC8vICsgZnVuYy4uLiBhbmQgc28gb24KCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJcmV0dXJuIGwKCQkJCQkJCX0KCQkJCQkJfSkoay0xKSAvLyBsID0gayAtIDEgPSAxCgkJCQkJfSBlbHNlIHsKCQkJCQkJcmV0dXJuIGsKCQkJCQl9CgkJCQl9KShtLTEpIC8vIGsgPSBtIC0gMSA9IDIKCQkJfSBlbHNlIHsKCQkJCXJldHVybiBuCgkJCX0KCQl9KShuLTEpIC8vIG0gPSBuIC0gMSA9IDMKCX0gZWxzZSB7CgkJcmV0dXJuIG4KCX0KfQoKcHJpbnQoc3VtVG9Gb3VyRXhwbGFpbmVkKDQpKQoK