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
...