gpt4 book ai didi

scheme - 在 Scheme 中全局存储值

转载 作者:行者123 更新时间:2023-12-02 04:11:30 26 4
gpt4 key购买 nike

我有一系列需要执行的数学运算。函数的输入是 n。

前两个操作是求和。使用 n.结果需要存储为变量以在以后的函数中使用。

前任。

main func(n)
func1 (n)
returns a1

func2 (n)
returns b1

func4
uses b1 to compute c1

etc....

我已经创建了所有分开的函数,但需要使用一个只接受 n 的主函数,以及一种全局存储变量以供以后函数使用的方法(不更改它们)。这些是前两个功能。
(define (main n)
(define (a1func n)
(let* ((a1 0))
(let* ((i (- n 1)))
(if (= n 1) 0
(+(/ 1 i) (a1func(- n 1)))))))

(define (a2func n)
(let ((a2 0))
(let ((i (- n 1)))
(if (= n 1) 0
(+(/ 1 (expt i 2)) (a2func(- n 1)))))))

(define b1
(if (= n 1) 0
(/(+ n 1)(* 3(- n 1)))))
(define b2
(if (= n 1) 0
(/(* 2 (+ n 3 (expt n 2))) (*(- n 1)(* 9 n)))))
(define c1 (- b1 (/ 1 a1)))
(define c2 (+ (- b2 (/ (+ n 2) (* a1 n))) (/ a2 (expt a1 2))))
(define e1 (/ c1 a1))
(define e2 (/ c2 (+ (expt a1 2) a2)))
(list e1 e2))

最佳答案

函数式编程不同于命令式编程。 Scheme 是一种函数式语言。不要使用绑定(bind)变量作为内存位置。但是,如果您需要诸如内存位置之类的东西,请使用向量。

如果要在另一个函数中使用变量的值,请将其作为参数传递给该函数:

(define (fun1 n) ...)
(define (fun2 n) ...)
(define (fun4 n b) ...)

(define (main n)
(let ((a1 (fun1 n))
(b1 (fun2 n)))
(let ((c1 (fun4 n b1)))
( .....)))...))))

关于scheme - 在 Scheme 中全局存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809084/

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