像轉換(1 2 3 4)1234〜如何在列表中將列表轉換爲num?
1
A
回答
2
這聽起來像一個家庭作業的問題...
想想10的冪,什麼在一些每個數字:1234其實就是。
1
我寫的代碼如下~~~它的工作原理,但代碼可能太長~~~
(define (power b e)
(define (power-product a b e)
(if (= e 0)
a
(power-product (* a b) b (- e 1))))
(power-product 1 b e))
(define (length items)
(if (null? items)
0
(+ 1 (length (cdr items)))))
(define (list->num lst)
(if (null? lst)
0
(+ (* (power 10 (- (length lst) 1)) (car lst)) (list->num (cdr lst)))))
1
既然你已經發布你的工作的解決方案,我會後這一點。 如果你不能使用let,你可以用輔助函數做類似的事情。
(define (list->num l)
(let loop ((n 0) (l l))
(if (empty? l)
n
(loop (+ (* 10 n) (car l)) (cdr l)))))
一本書像「小策士」價格低廉,容易和有趣的閱讀,它真的讓你在「計劃模式」的思想。它將幫助您編寫更簡潔的解決方案。
4
問題的特徵在於聚結列表成一個單一的值,強烈暗示使用摺疊的:
(define (fold-left op initial items)
(define (loop result rest)
(if (null? rest)
result
(loop (op result (car rest))
(cdr rest))))
(loop initial items))
(define (list->num list)
(fold-left (lambda (value digit)
(+ (* value 10) digit))
0
list))
(list->num '(1 2 3 4))
;Value: 1234
1
下面是一個使用僅尾遞歸
(define (list->num l)
(cond
((null? l) 0)
((null? (cdr l)) (car l))
(else (let ([first (* 10 (car l))][rest (cdr l)])
(list->num (cons (+ first (car rest)) (cdr rest)))))))
2
這裏有兩個溶液從我的Standard Prelude功能,在數字和數字列表之間進行轉換;都採用可選參數來指定要使用的基數。它們使用標準的R4RS計劃編寫,並應在任何最新的計劃系統中工作。
(define (digits n . args)
(let ((b (if (null? args) 10 (car args))))
(let loop ((n n) (d '()))
(if (zero? n) d
(loop (quotient n b)
(cons (modulo n b) d))))))
(define (undigits ds . args)
(let ((b (if (null? args) 10 (car args))))
(let loop ((ds ds) (n 0))
(if (null? ds) n
(loop (cdr ds) (+ (* n b) (car ds)))))))
相關問題
- 1. 如何將列表列表轉換爲列表列表?
- 2. 如何將列表列表轉換爲列表序列?
- 3. 如何將列表[Double]轉換爲列?
- 4. 如何將Python整數列表轉換爲列表列表?
- 5. 如何將元素列表轉換爲列表列表
- 6. 如何將字典列表轉換爲列表列表?
- 7. 如何將數據框列表轉換爲列表列表?
- 8. 在python中將列表和列表的列表轉換爲csv
- 9. 如何列表轉換爲Unicode列表
- 10. 如何將X列表轉換爲C#中的Y列表?
- 11. 如何將列表的列表轉換爲Python中的字典?
- 12. 如何將3D列表轉換爲Python中的2D列表?
- 13. 將列表轉換爲列表清單
- 14. 將列表轉換爲鏈接列表
- 15. 將列表從ord轉換爲列表
- 16. 將列表轉換爲字典列表
- 17. 將列表轉換爲一個列表
- 18. 將列表轉換爲整數列表
- 19. 將元組列表轉換爲列表?
- 20. 如何將系列列表轉換爲列表?
- 21. 將轉換列表轉換爲水星中的元組列表
- 22. 將Sage列表列表轉換爲R列表列表
- 23. 如何將會話轉換爲列表?
- 24. 如何將列表轉換爲數組?
- 25. 如何將Pandas DataFrame轉換爲列表?
- 26. 如何將列表轉換爲JavaRDD
- 27. 如何將user_input轉換爲列表?
- 28. 如何將索引轉換爲列表?
- 29. 如何將json轉換爲Python列表?
- 30. 如何將列表值轉換爲int
雖然'expt'是後者的名字,''length'和'power'已經在Scheme中定義。 – 2009-11-06 07:14:07