我想知道你怎么能写一个接受整数参数(n)的递归方法并写下以下序列:n,n-1,n-2,n-3,...,0,... - (n-3), - (n-2), - (n-1), - n。例如:5,4,3,2,1,0,-1,-2,-3,-4,-5
这个例子的基本情况是什么? 该方法将如何知道何时结束?
到目前为止,我有:
public static void createSequence(int n) {
if (n== 0)
return;
else{
System.out.println(n);
createSequence(n-1);
}
}
这只会创建一个正整数序列,如何修复此代码?
答案 0 :(得分:2)
你只需要在递归调用后编写-n:
public static void createSequence(int n) {
if (n == 0) {
System.out.println(n);
return;
}
else {
System.out.println(n);
createSequence(n-1);
System.out.println(-n);
}
}
答案 1 :(得分:1)
看起来我迟到了,但这是我的:
public static void createSequence(int n){
System.out.println(n);
if(n==0) return;
createSequence(n-Integer.signum(n));
System.out.println(-n);
}
适用于积极和消极的投入。
答案 2 :(得分:0)
我认为最简单的方法是编写一个辅助递归方法:
public static void createSequence(int n) {
writeSequence(n, -n);
}
private static void writeSequence(int current, int limit) {
if (current >= limit) {
System.out.println(current);
writeSequence(current - 1, limit);
}
}
答案 3 :(得分:0)
您可以将原始号码作为第二个参数进行检查:
public static void createSequence(int n, int limit) {
if (n < limit)
return;
else{
System.out.println(n);
createSequence(n-1, limit);
}
}
同样使用:createSequence(5, -5);
,它将打印:
5
4
3
2
1
0
-1
-2
-3
-4
-5
答案 4 :(得分:0)
在这种情况下,您通常使用辅助方法进行递归调用:
public static void createSequence(int n) {
createSequenceHelper(n, -n); // be sure that 'n' is positive here
}
private static void createSequenceHelper(int n, int limit) {
if (n >= limit) {
System.out.println(n);
createSequenceHelper(n - 1, limit);
}
}
答案 5 :(得分:0)
已修复!
public static void createSequence(int n) {
if (n== 0){
System.out.println(0);
return;
}else{
System.out.println(n);
createSequence(n-1);
System.out.println(n*-1);
}
}
答案 6 :(得分:0)
解决问题的最佳方法是以下代码。在调用此递归函数之前,应将start初始化为n。 (开始= N)
public static void createSequence(int n, int start) {
if (start + n == 0)
return;
else{
System.out.println(n);
createSequence(n-1, start);
}
}