无法理解方法上的Java调用方法

无法理解方法上的Java调用方法,java,Java,所以我正在阅读Java,我遇到了一个例子。我不知道它是怎么工作的。下面您将看到ConsLoRunner类中的方法sortByTime()。我的问题是,它如何能够输出一些东西,难道它不会一次又一次地递归该方法,而永远不会到达insertByTime(this.first)方法吗 旁注:这是一个马拉松赛跑者的例子,并根据他们的时间(从最快到最慢)对他们进行排序 类运行程序{ 字符串名; 智力年龄; 国际围嘴; 布尔伊斯梅尔; int pos; 整数时间; 运行程序(字符串名称、整数年龄、整数bib、

所以我正在阅读Java,我遇到了一个例子。我不知道它是怎么工作的。下面您将看到
ConsLoRunner
类中的方法
sortByTime()
。我的问题是,它如何能够输出一些东西,难道它不会一次又一次地递归该方法,而永远不会到达
insertByTime(this.first)
方法吗

旁注:这是一个马拉松赛跑者的例子,并根据他们的时间(从最快到最慢)对他们进行排序

类运行程序{
字符串名;
智力年龄;
国际围嘴;
布尔伊斯梅尔;
int pos;
整数时间;
运行程序(字符串名称、整数年龄、整数bib、布尔isMale、整数位置、整数时间){
this.name=名称;
这个。年龄=年龄;
this.bib=bib;
this.isMale=isMale;
this.pos=pos;
这个时间=时间;
}
公共布尔值在前完成(流道r){
返回此时间
它不是一次又一次地递归那个方法吗

不,它根本不使用递归,因为它在类成员上调用方法
rest

返回此。rest.sortByTime().insertByTime(this.first)

它不是一次又一次地递归那个方法吗

不,它根本不使用递归,因为它在类成员上调用方法
rest

返回此。rest.sortByTime().insertByTime(this.first)

我不知道它是怎么工作的

我会尽力回答这个问题

您看到的是的Java版本(相当混乱),通常在以下语言中可以找到

本例中的“列表”可以递归定义。它是:

  • 空列表,由
    ()
    nil
    表示,或
  • 第一个元素后跟另一个列表(其余元素):
    (第一个,其余)
如您所见,Java类与这些概念之间有一个清晰的映射:

ILoRunner    -> An abstract List, the root type
MtLoRunner   -> An empty list: () or nil
ConsLoRunner -> A non-empty list: (first, rest)
线索在名称
ConsLoRunner
的开头。在LISP中,
cons
是一个“构造函数”,它创建一个包含另外两个对象的对象
cons
通常用于创建列表。但它也可以用于创建非列表结构。对不起,我离题了

将示例重写为列表表示,运行者列表
list1
大致如下(为了简单起见,省略其他字段):

输出

Sorted:   (1, (4, (7, ())))
Original: (7, (1, (4, ())))
我不知道它是怎么工作的

我会尽力回答这个问题

您看到的是的Java版本(相当混乱),通常在以下语言中可以找到

本例中的“列表”可以递归定义。它是:

  • 空列表,由
    ()
    nil
    表示,或
  • 第一个元素后跟另一个列表(其余元素):
    (第一个,其余)
如您所见,Java类与这些概念之间有一个清晰的映射:

ILoRunner    -> An abstract List, the root type
MtLoRunner   -> An empty list: () or nil
ConsLoRunner -> A non-empty list: (first, rest)
线索在名称
ConsLoRunner
的开头。在LISP中,
cons
是一个“构造函数”,它创建一个包含另外两个对象的对象
cons
通常用于创建列表。但它也可以用于创建非列表结构。对不起,我离题了

将示例重写为列表表示,运行者列表
list1
大致如下(为了简单起见,省略其他字段):

输出

Sorted:   (1, (4, (7, ())))
Original: (7, (1, (4, ())))

如果它不使用递归,那么在return语句中放入
.sortByTime()
有什么意义呢?请获取有关变量的信息。在返回语句中使用
sortByTime()
的目的是在返回结果之前调用该方法,可能是为了对该对象中包含的数据进行排序。如果不使用递归,那么在返回语句中放置
.sortByTime()
有什么意义?请获取有关变量的信息。在返回中使用
sortByTime()
的目的是在返回结果之前调用该方法,可能是为了对该对象中包含的数据进行排序。这非常令人惊讶,非常感谢。我仍然感到困惑的一部分是Java如何知道
1。对列表的其余部分进行排序
。你所做的只是调用列表中其他部分的一个方法?它是如何神奇地排序的?啊,这就是递归的美妙之处,对吗?首先定义空列表的基本情况。然后在每次递归中,给方法一个较小的问题,然后
Sorted:   (1, (4, (7, ())))
Original: (7, (1, (4, ())))