(Java)递归函数:使用n-1和n+;1.

(Java)递归函数:使用n-1和n+;1.,java,function,recursion,Java,Function,Recursion,我最近得到了一个项目,如下所示: 递归关系: x(n)=x(n+1)-2x(n-1),其中x(0)=1,x(2)=3 编写一个程序,用户在其中输入一个数字n,并输出x的第n个值,如上所示 到目前为止,我已经创建了这个方法(我对递归非常陌生,而且非常不擅长递归) 根据赋值,我计算出x(1)=1。[因为我得到了x(0)=1和x(2)=3]: 这让我想到了上面静态方法x所示的基本情况 if(n <= 1) // because 0 and 1 each return 1 { return 1;

我最近得到了一个项目,如下所示:

递归关系: x(n)=x(n+1)-2x(n-1),其中x(0)=1,x(2)=3 编写一个程序,用户在其中输入一个数字n,并输出x的第n个值,如上所示

到目前为止,我已经创建了这个方法(我对递归非常陌生,而且非常不擅长递归)

根据赋值,我计算出x(1)=1。[因为我得到了x(0)=1和x(2)=3]:

这让我想到了上面静态方法x所示的基本情况

if(n <= 1) // because 0 and 1 each return 1
{
return 1;
}
if(n == 2) // simply because 2 returns 3
{
return 3;
}
第21行是x方法的else子句中的返回语句:

return x(n+1) - 2*(x(n-1));
我不知道我能改变什么来修复它。我曾尝试将其重新设置为x(n+1)-x(n-1)-x(n-1),但它仍然会给我相同的错误。我不知道是基本情况无效,因此不允许函数正常运行,还是我所做的返回语句是错误的。 我也试着把它写出来,好像x(5)调用x(4)调用x(3),就像我的笔记所显示的那样,但是我遇到了一个问题,关于在同一个函数语句中使用n+1和n-1,所以我认为我做得不对。
非常感谢您的指导

问题是因为它是一个永无止境的循环。。。。 x(n)=x(n+1)-2x(n-1)

你在增加n,即。, 为了

x(0)=1

x(1)=x(2)-2x(0)

x(3)=x(4)-2x(2)

它继续前进,因为x(n+1)没有上限


请检查是否缺少递归终止位置的边界条件。

递归关系定义为上述条件的函数。 所以你必须重新定义你的递归关系

x(n)=x(n+1)-2x(n-1)

x(n+1)=x(n)+2x(n-1)

x(n)=x(n-1)+2x(n-2)


使用上面的等式实现基本情况下的算法
x(0)=x(1)=1,x(2)=3

递归关系不会终止。要么是作业/项目要求不正确(或者它们构成了一个骗人的问题),要么是您阅读和转录的内容不正确。您好,谢谢您的回复。我只有一个问题,那是关于你陈述中的数学问题。是否存在允许更改为x(n+1)=x(n)+2x(n-1)的某种数学函数关系?我在数学方面不是很有经验,所以我只想在需要解释的情况下弄清楚这个概念。事实上,我又读了几遍。。这就是简单的减法和加法!非常感谢你!谢谢你的回复!你说递归是如何递增的,这有助于我对递归的理解。非常感谢。
x(n) = x(n+1) - 2(x(n-1))
x(1) = x(2) - 2(x(0))
x(1) = 3 - 2(1)
x(1) = 3 - 2
x(1) = 1
if(n <= 1) // because 0 and 1 each return 1
{
return 1;
}
if(n == 2) // simply because 2 returns 3
{
return 3;
}
Exception in thread "main" java.lang.StackOverflowError
    at x.x(x.java:21)
Java Result: 1
return x(n+1) - 2*(x(n-1));