racket - 您如何比较球拍中的 3 个或更多参数?
问题描述
我知道在 Racket 中比较例如两个数字,你会得到这样的结果。
(define (myMax x y)
(if (< x y) y x))
我的问题是如何比较具有 3 个或更多参数的函数。例如从参数中获取最大的数字。
(define (myMax x y z)
解决方案
如果要处理未定义数量的元素,则需要使用list
.
惯用的方式是用来recursion
处理元素。每个函数调用都需要处理一个元素 ( car
) 和列表的其余部分cdr
。
您可以在另一篇文章中找到实现: https ://stackoverflow.com/a/42463097/10953006
编辑 1:示例
(define (maximum L)
(if (null? (cdr L))
(car L)
(if (< (car L) (maximum (cdr L)))
(maximum (cdr L))
(car L))))
(maximum '( 1 2 3 ))
(maximum '( 1 2 3 4))
(maximum '( 1 2 3 4 5))
给出结果:
3
4
5
编辑2:如果真正的问题是关于variable number of arguments
球拍,你可以使用以下符号:
(define (test-function . L)
(printf "~S~%" L)) ;; Here: L is the list (1 2 3)
(test-function 1 2 3)
将显示 ( printf
):
(1 2 3)
推荐阅读
- ruby-on-rails - 如何在 ruby for chrome 浏览器中执行 ctrl+j。我正在使用 RubyMine 和 WatirWebdriver
- bash - 如何将 cat 命令的多行输出存储在不同的变量中?
- sql - 在 oracle11g 中的某些情况下进行 DDL 和插入数据时出错
- javascript - 反应函数 - 无限循环 - 缩小反应错误 #301
- c#-3.0 - 数字的十位和个位
- selenium-webdriver - 如果对于某些字段 getText() 返回 NULL 那么还有哪些其他函数可以用来获取该字段的字符串?
- combobox - Combobox 在 MessageBox 关闭 ZK 时关闭
- lotus-notes - 如何在多米诺骨牌设计器中修复类未发现异常?
- jquery - Dropdown-menu should collapse on LINK click
- sapui5 - 如何在不重新打开的情况下获得 sapui5 应用程序的初始状态