gpt4 book ai didi

方案谐波函数

转载 作者:行者123 更新时间:2023-12-04 16:50:08 25 4
gpt4 key购买 nike

有没有办法使用 if 语句而不是 cond 来编写这个函数?以下内容按预期工作,但我很想看到另一个选项。

(define (harmonic-numbers n)
(cond ((= n 1) 1)
((> n 1) (+ (/ 1 n)
(harmonic-numbers(- n 1))))))

最佳答案

当然,一个cond可以实现为一系列嵌套 if秒。请注意,您的代码中有一个潜在的错误,如果 n 会发生什么?小于 1

(define (harmonic-numbers n)
(if (= n 1)
1
(if (> n 1)
(+ (/ 1 n) (harmonic-numbers (- n 1)))
(error 'undefined))))

根据使用的 Scheme 解释器,if表单可能要求您始终为所有条件提供“其他”部分(这就是为什么如果 n 小于 1 时我会发出错误信号)。其他解释器没有那么严格,很乐意让你写一个单臂条件:

(define (harmonic-numbers n)
(if (= n 1)
1
(if (> n 1)
(+ (/ 1 n) (harmonic-numbers (- n 1))))))

编辑

现在我们已经确定如果 n 会发生什么小于一,我们可以使用 if 编写一个更简单的版本:

(define (harmonic-numbers n)
(if (<= n 1)
1
(+ (/ 1 n) (harmonic-numbers (- n 1)))))

这是使用 cond 的等效版本:

(define (harmonic-numbers n)
(cond ((<= n 1) 1)
(else (+ (/ 1 n) (harmonic-numbers (- n 1))))))

关于方案谐波函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18707073/

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