coredump-'s answer address the right issue:  emacs's dynamic scoping means that you no longer have access to the value of n that was in scope when your adder function was called.  Rather than using backquote to construct a function with the constant injected, though,  I think that it might be more descriptive to use emacs's lexical-let, since what you're looking for is a lexical closure. Just to be clear, here's the behavior you're getting now, with dynamic scoping:
(defun dyn-adder (n)
  (lambda (x)
    (+ n x)))
(funcall (dyn-adder 3) 5)
;; (void-variable n) error...
And here's how you can use lexical-let to get an actual lexical closure:
(defun lex-adder (n)
  (lexical-let ((n n))
    (lambda (x)
      (+ n x))))
(funcall (adder 3) 5)
;; 8
There isn't much difference between the backquote solution and lexical-let in defining a simple adder, but there are contexts where it's important to actually have a variable that you're referencing.  E.g., if you wanted to create an accumulator, you'd need that local state.  With dynamic scoping you'd get the same void-variable error:
(defun dyn-accumulator (n)
  (lambda (x)
    (incf n x)))
(let ((acc (dyn-accumulator 5)))
  (funcall acc 3)
  (funcall acc 8))
;; (void-variable n) error...
With a backquote approach, you'll get a different error.  (I'm not sure I'm doing this correctly, though.  I think that the error I'm getting is from trying to funcall a list, not from the function having a constant in it.  But in any case, it should be clear that (lambda (x) (incf 5 x)) won't work, because you can't increment the constant value.)
(defun bq-accumulator (n)
  `(lambda (x)
     (incf ,n x)))
(let ((acc (bq-accumulator 5)))
  (funcall acc 3)
  (funcall acc 8))
;; wrong type argument error...
But with lexical-let, we have a real variable that we can modify:
(defun lex-accumulator (n)
  (lexical-let ((n n))
    (lambda (x)
      (incf n x))))
(let ((acc (lex-accumulator 5)))
  (funcall acc 3)
  (funcall acc 8))
;; 16
I learned about and described lexical-let more in an answer I wrote for Emacs lisp: why does this sexp cause an invalid-function error?;  that may be useful information here, as well.