[英]Recursive functions in clojure
此遞歸函數如何逐步工作:
(fn foo [n]
(if (< n 10)
[n]
(conj (foo (quot n 10))
(mod n 10))))
我在理解上有問題:可以說我給它指定n
為123,它將返回其數字的向量。 在最后一步到達1
和(< 1 10)
,應轉到然后的部分[n]
,返回[1]並退出遞歸。 所以這不會發生,我在劇中缺少什么?
在到達1
和(< 1 10)
的最后一步,它確實進入了然后的部分[n]
,返回了[1],但是它不是從遞歸中出來的 ,而是從最內層的調用中得出的。
評估如下:
(foo 123)
(conj (foo 12) 3)
(conj (conj (foo 1) 2) 3)
(conj (conj [1] 2) 3)
(conj [1 2] 3)
[1 2 3]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.