这是继无限循环,Clojure中这样的事情就好了科特林无限循环的递归
tailrec fun passHeaders (xH: List<Int>)
{
while (xH.isNotEmpty())
{
passHeaders(xH.drop(1))
}
}
这是继无限循环,Clojure中这样的事情就好了科特林无限循环的递归
tailrec fun passHeaders (xH: List<Int>)
{
while (xH.isNotEmpty())
{
passHeaders(xH.drop(1))
}
}
List.drop
不改变List
,而是产生一个新的List
实例。因此,你是while
循环是无限的。
它不是,但产生新的 –
您不提供基本案例,这就是为什么。因为在每次拨打passHeaders
时,xH
是自己的副本,因此永远不会是空的。请记住,当您拨打drop()
时,会创建一个新列表。
while (xH.isNotEmpty())
它说的是“,而我的xH
副本是不是空的,叫passHeaders
在另一方面:。
if (xH.isNotEmpty())
可能会做你想要什么
谢谢,这是解决问题。 –
为什么你期望这个循环终止? –
为什么所有的反对票? – voddan