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

时间:2013-10-05 02:35:54

标签: 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.

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

4 个答案:

答案 0 :(得分:2)

大提示:

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     if a<b 
f(a,b) = {
         { a                    if a==b

现在尝试编写代码。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

使用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);
 }

}

答案 3 :(得分:0)

此示例还处理第一个参数是否大于第二个

printUpAndDown(1, 5) = 1 2 3 4 5 4 3 2 1

printUpAndDown(5, 1) = 5 4 3 2 1 2 3 4 5

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 + " ");
}