小编kfr*_*bie的帖子

Clojure:带有递归的nullpointerexception

我正在创建一个重载函数,它将一个数字列表作为参数(以及一个数字列表和重载签名中的单个数字).从此列表中,必须找到并返回最高值.我知道可用的"排序"方法,它自动为您排序列表,但我试图使用递归发现最高值.以下是我正在使用的代码.

32    (defn my-max
33      ([list]
34        (if (empty? list)
35          -1
36          (my-max (pop list) (first list))) ; recursive call
37        )
38      ([list high]
39        (if (empty? list) ; base case
40          high)
41        (if (> (first list) high)
42          (my-max (pop list) (first list)))
43        (my-max (pop list) high))
44      )
45    
46    (println (my-max '(1 2 3)))
Run Code Online (Sandbox Code Playgroud)

如您所见,我对包含1,2和3的列表进行了硬编码,其中应返回3个.运行代码时收到错误:

Exception in thread "main" java.lang.NullPointerException
    at clojure.lang.Numbers.ops(Numbers.java:942)
    at clojure.lang.Numbers.gt(Numbers.java:227)
    at user$my_max.invoke(HelloWorld.clj:41)
    at user$my_max.invoke(HelloWorld.clj:42)
    at user$my_max.invoke(HelloWorld.clj:42)
    at user$my_max.invoke(HelloWorld.clj:36)
    at …
Run Code Online (Sandbox Code Playgroud)

recursion clojure nullpointerexception

1
推荐指数
1
解决办法
1074
查看次数

标签 统计

clojure ×1

nullpointerexception ×1

recursion ×1