gpt4 book ai didi

scheme - 如何计算位数?

转载 作者:行者123 更新时间:2023-12-01 22:38:28 25 4
gpt4 key购买 nike

  1. (CountDigits n) takes a positive integer n, and returns the number of digits it contains. e.g.,

    (CountDigits 1) → 1
    (CountDigits 10) → 2
    (CountDigits 100) → 3
    (CountDigits 1000) → 4
    (CountDigits 65536) → 5

我想我应该使用剩余的数字和其他东西,但除此之外我真的迷路了。我首先尝试的是将数字除以 10,然后查看数字是否小于 1。如果是,则它有 1 个数字。如果它不除以 100,依此类推。但我不太确定如何将其扩展到任何数字,所以我放弃了这个想法

(定义(num-digits number digit) (如果(=数字0) 1

最佳答案

偶然发现了这个并且不得不提供基于日志的答案:

(define (length n)
(+ 1 (floor (/ (log n) (log 10))))
)

为清楚起见进行编辑:这是一个不使用递归的 O(1) 解决方案。例如,给定

(define (fact n)
(cond
[(= n 1) 1]
[else (* n (fact (- n 1)))]
)
)

(define (length n)
(+ 1 (floor (/ (log n) (log 10))))
)

运行(time(length(fact 10000)))产生

cpu time: 78 real time: 79 gc time: 47
35660.0

表示10000!产生一个由 35660 位数字组成的答案。

关于scheme - 如何计算位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19530112/

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