summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lisp/calc/calc-comb.el12
1 files changed, 7 insertions, 5 deletions
diff --git a/lisp/calc/calc-comb.el b/lisp/calc/calc-comb.el
index c84ff236851..91fbb7b2b8a 100644
--- a/lisp/calc/calc-comb.el
+++ b/lisp/calc/calc-comb.el
@@ -362,11 +362,13 @@
(math-gammap1-raw '(float -25 -2))))
(defun math-factorial-iter (count n f)
- (if (= (% n 5) 1)
- (math-working (format "factorial(%d)" (1- n)) f))
- (if (> count 0)
- (math-factorial-iter (1- count) (1+ n) (math-mul n f))
- f))
+ (while (> count 0)
+ (if (= (% n 5) 1)
+ (math-working (format "factorial(%d)" (1- n)) f))
+ (setq count (1- count)
+ f (math-mul n f)
+ n (1+ n)))
+ f)
(defun calcFunc-dfact (n) ; [I I] [F F] [Public]
(cond ((Math-integer-negp n)