Recursion 我正在尝试手工解决递归问题

Recursion 我正在尝试手工解决递归问题,recursion,Recursion,我自学成才,认为我理解递归,但我无法解决这个问题: 调用返回的是什么?recur(12) 调用返回的内容是什么 公共静态整数重现(整数y) { 如果(y首先,我想你的意思是: public static int recur(int y) 但此方法的结果是通过在方法开头放置print语句来发现的: public static int recur(int y) { System.out.println(y); if(y <=3) return

我自学成才,认为我理解递归,但我无法解决这个问题:

调用返回的是什么?
recur(12)

调用返回的内容是什么

公共静态整数重现(整数y)
{

如果(y首先,我想你的意思是:

public static int recur(int y)
但此方法的结果是通过在方法开头放置print语句来发现的:

public static int recur(int y)
  {
    System.out.println(y);
      if(y <=3)
             return y % 4;
      return recur(y-2) + recur(y-1) + 1;
  }
公共静态整数重现(整数y)
{
系统输出打印项次(y);

如果(y我已经去掉了那里的模量,因为任何小于4的非负性
n
都会变成
n
,所以我得到:

public static int recur (int y)
{
      return y <= 3 ?
             y :
             recur(y-2) + recur(y-1) + 1;
}
所以实际上,递归会停止当前迭代中的过程,直到您得到当前迭代相加的答案,所以我可以用相反的方式来做,但是每次使用以前的计算值时,我都会暂停。

你应该有足够的信息来做任何
y

这只不过是一个增强的斐波那契序列。 前四个项定义为0、1、2、3。此后,每个项都是前两个项加上一个项的总和。这一+1扩充与经典斐波那契序列不同。只需手动将序列相加:

0
1
2
3
3+2+1 = 6
6+3+1 = 10
10+6+1 = 17
17+10+1 = 28
...

不可能。我们不知道
y
是什么!除非你的意思是
u
?准确性非常重要。。。。
recur(5); //=>
recur(3) + recur(4) + 1; //==>
recur(3) + ( recur(2) + recur(3) + 1 ) + 1; //==>
3 + 2 + 3 + 1 + 1; // ==>
10
0
1
2
3
3+2+1 = 6
6+3+1 = 10
10+6+1 = 17
17+10+1 = 28
...