object Main {
def main(args: Array[String]): Unit = {
def checkerFunction(list: List[String], numberToCheck: Int): List[Int] = {
@scala.annotation.tailrec
def recursiveFunction(listOfIndex: List[Int], listToCheck: List[String], index: Int): List[Int] = {
if (listToCheck.isEmpty) listOfIndex
else {
val newIndexList =
if (listToCheck.head == numberToCheck.toString) listOfIndex :+ index;
else listOfIndex
recursiveFunction(newIndexList, listToCheck.tail, index + 1)
}
}
recursiveFunction(List(), list, 0)
}
val ls = List("1", "2", "1", "3", "1", "0")
checkerFunction(ls, 1).foreach(println)
}
}
下午好,有必要从值中推断出列表。请告诉我,没有什么聪明的想法。任务是这样的: - 你需要递归地写这个,任务是打印列表中所有出现的元素的索引,输出也在列表中,最好使用数字。
您可以使用模式匹配(三种情况:1)列表的头元素匹配所需的数字,2)不匹配,3)空列表)并将补充列表(累加器)作为参数传递给递归函数。
索引列表以相反的顺序形成并在最后展开。这比追加到末尾更有效
为了完成图片,以下是如何通过标准方法解决问题:
zipWithIndex
形成一个形式为 的元组列表(элемент_списка, номер_в_списке)
,然后过滤元组,其中元素等于numberToCheck
,然后从过滤的元组列表中获取第二个元素(原始列表中的数字)。像这样