gpt4 book ai didi

clojure - 反转数字的函数算法

转载 作者:行者123 更新时间:2023-12-05 01:13:33 24 4
gpt4 key购买 nike

我最近一直在玩 Clojure,但我无法让这个算法工作:

(defn reverse-number [number reversed]
(if (= number 0)
reversed
(reverse-number (/ number 10)
(+ (rem number 10) (* reversed 10)))))

我应该这样称呼它 (reverse-number 123 0)我期望的结果是: 321 .
当我运行这个时, REPL 刚刚挂起 .

有人可以解释一下,发生了什么,我做错了什么以及如何使此功能正常工作?

备注 : 我知道我可以使用字符串函数来反转数字。实际上,我已经这样做了,但是我对这个解决方案不感兴趣。我想要的只是向函数式语言迈进。这就是我尝试多种方法的原因。

使用 字符串函数 :
(defn reverse-number [n]
(Integer. (clojure.string/reverse (str n))))

(reverse-number 123) ; --> 321

不喜欢这个版本因为它 感觉像作弊通过使用 reverse 的字符串版本。

最佳答案

您应该使用 quot而不是 / .
/在 clojure 中会给你一个分数,所以 number永远不会是 0(除非它从一开始就是 0),而 quot会给你“整数除法”。

例子:

user=> (/ 123 10)                  
123/10
user=> (quot 123 10)
12

关于clojure - 反转数字的函数算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com