报告列表中最早的项目

时间:2016-08-19 05:03:19

标签: snap-lang

我正在使用Snap!试图找到列表中最早的项目。例如,在列表[3,1,2]中,我想报告" 1。"我希望解决方案能够用于单词(例如,给出列表[Bob,George,Ari]报告" Ari")。

我尝试使用递归来解决问题

enter image description here

并且解决方案有效。但是,如果没有第二个" if else"我无法找到一种递归方式。声明。有没有办法使用递归来解决这个问题而没有"如果0 =长度..."声明?

使用它here

1 个答案:

答案 0 :(得分:1)

如果没有两个if...else语句,我就没有办法做到这一点。你需要两张支票:

  1. 列表是否已用尽?
  2. 第一个元素是否少于以下所有元素?
  3. 在某些语言中,您可以使用条件三元运算符?:,但我不认为Snap!支持。无论如何,它只是if...else的语法糖。

    你可以对这个功能进行一些清理。

    1. 我建议明确处理零长度列表的情况。
    2. "早到"令人困惑。我推荐使用术语"至少",因为您要使用"不到"操作者。
    3. 不要多次致电keep items such that [] from []。这是低效的,如果有人修改了一行但忘记修改另一行,则可能是一个错误。而是将结果保存在脚本变量中。
    4. 不要将当前的第一个元素与列表中的每个元素进行比较。这使函数的运行时间为O(n ^ 2)。相反,到目前为止,仅将它与最小元素进行比较。这将运行时间减少到O(n)。
    5. 其中一些变化在这里实施:

      enter image description here