Java 如何开发显示序列的递归函数?

Java 如何开发显示序列的递归函数?,java,recursion,Java,Recursion,这就是问题所在: 开发递归函数f(),以显示序列: 1 2 3 4 5...i (i-1) (i-2)...2 1 当调用f(1,i)时,在文本字段中 我们不允许使用循环、全局变量或数组。我们还必须能够使它在任何起点和终点都有效。例: f(2,5)=2 3 4 5 4 3 2. 我完全被难住了。请至少给我一个提示。假设函数必须返回字符串,这里有一个提示: 基本情况是当序列中只有一个数字时,返回一个带有该数字的序列。在其他情况下,您递归调用函数时,第一个参数少一个,然后将第一个参数放在结果的

这就是问题所在:

开发递归函数
f()
,以显示序列:

1 2 3 4 5...i (i-1) (i-2)...2 1 
当调用
f(1,i)
时,在文本字段中

我们不允许使用循环、全局变量或数组。我们还必须能够使它在任何起点和终点都有效。例:

f(2,5)=2 3 4 5 4 3 2.

我完全被难住了。请至少给我一个提示。

假设函数必须返回字符串,这里有一个提示:


基本情况是当序列中只有一个数字时,返回一个带有该数字的序列。在其他情况下,您递归调用函数时,第一个参数少一个,然后将第一个参数放在结果的开头和结尾。

使用两个递归函数。下面的代码未经测试-它旨在作为提示

 void printSequenceForGivenNumber(int i)
 {
printNextBiggerNumber(i, maximum);
printNextSmallerNumber(maximum - 1)
 }

void printNextBiggerNumber(int input, int maximum)
{
    if(input <= maximum)
    {
     System.out.print(input + " ");
     printNextBiggerNumber(input + 1, maximum);  
    }
}   


void printNextSmallerNumber(int input)
{
 if (current > = 1)
 {
    System.out.print(input + " ");
    printNextSmallerNumber(input - 1);
 }

}
void printsequence宽恕编号(int i)
{
printNextBiggerNumber(i,最大值);
printNextSmallerNumber(最大值-1)
}
无效printNextBiggerNumber(整数输入,整数最大值)
{
如果(输入=1)
{
系统输出打印(输入+“”);
printNextSmallerNumber(输入-1);
}
}
大提示:

f(2,5) = 2 + f(3,5) + 2;
f(3,5) = 3 + f(4,5) + 3;
f(4,5) = 4 + f(5,5) + 5;
f(5,5) = 5;
所以


{a+f(a+1,b)+a如果a此示例还处理第一个参数大于第二个参数的情况

printUpAndDown(1,5)
=
123454321

printUpAndDown(5,1)
=
54325

printUpAndDown(5,5)
=
5

public static void printUpAndDown(int i, int j)
{
    System.out.print(i + " ");
    if (i == j) return;
    int intToPass = (i > j) ? i - 1 : i + 1;   
    printUpAndDown(intToPass, j);
    System.out.print(i + " ");
}

我们不允许使用循环、全局变量或数组。
:您可以编码吗?开始并将代码带到您结束的地方,然后肯定有人可以帮助您完成它您确定
f(2,5)
2 3 4 4 2 1
而不是
f(2,5)=2 3 4 5 4 3 2
?这个函数返回什么类型?哦,是的,序列是2 3 4 5 4 3 2。我甚至不知道如何启动程序代码。我完全被难住了。我一直在沿着这条轨道思考,但我无法让它工作,我想我可以让它工作。非常感谢。
public static void printUpAndDown(int i, int j)
{
    System.out.print(i + " ");
    if (i == j) return;
    int intToPass = (i > j) ? i - 1 : i + 1;   
    printUpAndDown(intToPass, j);
    System.out.print(i + " ");
}