Write a Lisp program to calculate the sum of the first N positive integers

Join the discussion
Registration is free. Start your own thread to ask a follow-up.
4 replies · 5K views
fernanroy
Messages
6
Reaction score
0
Help! Please

I am trying to write a Lisp program to calculate the sum of the first N positive integers where, for example, when N = 6 the sum of the first N = 21

Any Ideas?
 
Physics news on Phys.org
Sure: the sum of the first N numbers is N plus the sum of the first N-1 numbers. That's a very strong hint. Heck, it's pretty much exactly the answer in LISP... :-p
 
out of whack said:
Sure: the sum of the first N numbers is N plus the sum of the first N-1 numbers. That's a very strong hint. Heck, it's pretty much exactly the answer in LISP... :-p

Would it be something like this?

(defun nsum (n)
(if (integerp n)
(if (or (= n 0) (< n 1))
Please enter the positive integer
(* n(/ 2(+ n 1))))))

Regards
 
This attempt yields the error: *** Read error: The input could not be tokenized at 2, 2. ***

> (defun sum (n1 n2)
“Returns the sum of two positive integers.”
(assert
(and (integerp n1) (>= n1 0))
(n1)
“N1 must be a nonnegative integer, instead it’s ~S.”
(n1)
(assert
(integerp n2)
(n2)
:N2 must be an integer, instead it’s ~S.”
n2)
(if (zerop n1) n2
(sum (1- n1) (1+n2))))
 
Even more obvious hint: nsum of n is defined as 0 if n is less than 1, otherwise it is n plus the nsum of (n-1). This is true in English, right? So write exactly that, but in LISP instead of English.