gpt4 book ai didi

scala - 如何将回溯算法转换为流?

转载 作者:行者123 更新时间:2023-12-04 13:28:40 24 4
gpt4 key购买 nike

有什么方法可以在Scala中使用stream算法定义backtracking

例如,以下backtracking算法将打印给定大小的所有“二进制”字符串。

def binaries(s:String,n:Int){
如果(s.size == n)
打印信息
别的 {
二进制文件(s +'0',n)
二进制文件(s +'1',n)
}
}

我相信我可以使用另一种迭代算法来定义给定大小的“二进制”字符串的stream。但是我想知道是否可以将上面的回溯算法转换为stream

最佳答案

这很简单:

def binaries(s: String, n: Int): Stream[String] = 
if (s.size == n) Stream(s)
else binaries(s + "0", n) append binaries(s + "1", n)

请注意 append的使用-此方法对于其他集合是非标准的,这是必需的,因为它必须使用其参数名。

关于scala - 如何将回溯算法转换为流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8625765/

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