【问题标题】:Linear Search using coffee script使用咖啡脚本的线性搜索
【发布时间】:2016-11-09 14:45:03
【问题描述】:

我试图为线性搜索编写咖啡脚本,但我被困在除了最后一行的值之外,我还必须返回一个值。 这是我的代码 sn-p:

Linear_Search = (array, desired) ->
    for x in array
        do ->
            if x is desired
                return true
    false

array = [2, 4, 6, 7, 3, 1, 5]

if Linear_Search(array, 4)
    console.log("Found")
else
    console.log("Not Found")

if Linear_Search(array, 9)
    console.log("Found")
else
    console.log("Not Found")

运行此脚本后,我得到了答案

"Not Found" "Not Found"

我尝试了各种方法,例如删除 return 关键字。但他们似乎没有工作。帮助我学习这项很棒的技术。

Compile Online

【问题讨论】:

标签: coffeescript


【解决方案1】:

你的功能有缺陷

Linear_Search = (array, desired) ->
    for x in array
        do ->
            if x is desired
                return true
    false

应该是:

Linear_Search = (array, desired) ->
    for x in array
        found = do (x) ->
            x is desired

        return true if found

    false

do 创建一个内部函数(闭包),它的响应没有在你的函数中被考虑。我不确定它在这种情况下会增强功能(可能有一个原因我错了 - 如果是这种情况,希望有更多知识的人参与进来)。

我会写

Linear_Search = (array, desired) ->
    for x in array
        return true if x is desired

    false

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-01-09
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 2011-11-08
  • 2011-06-30
  • 2013-06-10
  • 1970-01-01
相关资源
最近更新 更多