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