【发布时间】:2018-08-07 10:30:38
【问题描述】:
我对编程很陌生,刚在大学里学过。我有一个任务,我必须在 java 中递归地解决这个问题(不使用数组、if、else、while 等......)
所以任务是从 13542 到 12345 对数字进行排序。
public static void main(String[] args) {
System.out.println(sort(13542));
}
public static long sort(long n) {
return n < 10
? n
: sort(n, 0);
}
public static long sort(long n1, long n2) {
return n1 > 10
? xxx
: xxx;
}
问题是我不知道该怎么做。我认为我的开始还可以,但是我对第二种方法有问题。
【问题讨论】:
-
在翻译中,一个 'sortiere' übersehen? s/übersehen/被忽视。 main-method 没有提到 12345 - 应该如何引入这个数字?首先提到较高的数字是否意味着您必须对它们进行降序排序?边界内的所有数字?您能告诉我们,您的课程的主题是什么,可能是 for 循环?
-
从一个更简单的例子开始,它适合屏幕,例如 (sort 23 17)。当它起作用时,请选择严肃的数字。
-
一般来说,递归策略是识别一个基本情况,以及达到该基本情况的方法。在第二个函数中,您测试它是否大于 10,如果大于 10 或等于 10,您想使用整数除法和模数将其拆分,然后您想对那些 n1 和 n2 调用排序函数价值观。如果它小于 10,则您已达到基本情况,您可以返回该值。在每次调用时,您希望 n2 从 n1 中取出最大的数字,并使其成为 n2 的最小数字。
-
你是给
long sort(long n)方法的,还是这是你的开始? -
没有
if或else?哇哦。那一定是个错误。但是,您的示例代码已经包含一个三元条件;在我看来和if / else一样。
标签: java algorithm sorting recursion