(ns factorials)
(defn displayFactorials[number]
(if (> number 1)
(do
(* number (displayFactorials(- number 1))))))
(defn -main []
(println "To display the factorials,")
(print " enter the number: ") (flush)
(let
[ number (double (read))]
(println)
(displayFactorials number)
(println)
)
)我正在编写一个阶乘程序,接收用户输入。程序正在编译,但结果不是打印。对我该做什么有什么建议吗?
发布于 2020-03-03 20:03:51
你得让它看起来像这样:
(println (displayFactorials number))下面是该程序的一个更好的格式化版本:
(ns demo.core)
(defn displayFactorials
[number]
(if (> number 1)
(* number (displayFactorials (- number 1)))))
(defn -main []
(println "To display the factorials,")
(print " enter the number: ") (flush)
(let [number (double (read))]
(println
(displayFactorials number))))提示:如果数字等于1,您也会忘记该做什么。
更新
请看上面的提示。在文件test/tst/demo/core.clj中编写单元测试如下:
(ns tst.demo.core
(:use demo.core tupelo.test))
(deftest dummy#
(println :answer (displayFactorials 5)))尝试运行lein test并查看异常:
ERROR in (dummy#) (Numbers.java:1068)
Uncaught exception, not in assertion.
expected: nil
actual: java.lang.NullPointerException: null
at clojure.lang.Numbers.ops (Numbers.java:1068)
clojure.lang.Numbers.multiply (Numbers.java:173)
demo.core$displayFactorials.invokeStatic (core.clj:6)
demo.core$displayFactorials.invoke (core.clj:3)
demo.core$displayFactorials.invokeStatic (core.clj:6)
demo.core$displayFactorials.invoke (core.clj:3)
demo.core$displayFactorials.invokeStatic (core.clj:6)
demo.core$displayFactorials.invoke (core.clj:3)
demo.core$displayFactorials.invokeStatic (core.clj:6)
demo.core$displayFactorials.invoke (core.clj:3)
tst.demo.core$fn__18527.invokeStatic (core.clj:11)
tst.demo.core/fn (core.clj:10)这应该是一个很大的线索,什么是缺了。
https://stackoverflow.com/questions/60514646
复制相似问题