加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 19:09:12 所属栏目:安全 来源:网络整理
导读:有没有办法在 Scala中使用回溯算法定义流? 例如,以下回溯算法打印给定大小的所有“二进制”字符串. def binaries(s:String,n:Int) { if (s.size == n) println(s) else { binaries(s + '0',n) binaries(s + '1',n) }} 我相信我可以使用另一种迭代算法定义给
有没有办法在 Scala中使用回溯算法定义流?

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

def binaries(s:String,n:Int) {
  if (s.size == n)
    println(s)
  else {
    binaries(s + '0',n)
    binaries(s + '1',n)
  }
}

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

解决方法

这很简单:

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的使用 – 这个方法对于其他集合是非标准的,这是一个要求,因为它必须按名称取其参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读