所以一直在研究我过去的考试并遇到这个问题,询问如果num = 7,返回值是多少?将它插入BlueJ告诉我16,func1做了什么让它成为16?如何在方法中再次使用声明的方法?我搜索但很难找到这个确切的例子,因为它只是通常使用方法。
谢谢,
public int func1(int num)
{
if ( num <= 2 ) return 1;
return func1(num – 2) + num;
}
答案 0 :(得分:6)
这是对您正在使用它的相同功能的递归调用。
因此,func1(num – 2)
将使用public int func1(int num)
调用相同的函数 - num = num - 2
,直到num >= 2
所以,你的递归是这样的: -
func(n)
calls func(n-2)
calls func(n-4)
.. so on
calls func(1)
returns 1
returns 1 + 3 + ... + (n - 4)
returns 1 + 3 + ... + (n - 4) + (n - 2)
returns 1 + 3 + ... + (n - 4) + (n - 2) + n
更新: - 推广上述递归,让您弄清楚它是如何工作的。
您可以通过: - Recursion - Wiki Page
答案 1 :(得分:3)
这称为 recursion 。理解它的最好方法是在调试器中观察它,并考虑调用序列将如何终止(即为什么它不能无限地调用)。
(对不起 - 由于这是与家庭作业/考试有关,因此没有给你一个完整的答案)
答案 2 :(得分:1)
嗯,这就是recursion的全部内容。该方法被递归调用,直到满足某个退出条件。在您的情况下,退出条件是方法参数值达到&lt; = 2
的值时答案 3 :(得分:1)
为了理解递归,你必须先了解递归。
Here你可以找到一个很好的解释。
答案 4 :(得分:0)
您想要查看的内容(尤其是您的考试)称为Recursion
该函数使用不同的参数值调用自身,直到满足内部条件。
答案 5 :(得分:0)
如何在方法中再次使用声明的方法?
答案:在名为Recursion (computer science)
的方法中调用相同的方法您可以不使用循环
进行递归public int func1(int num) {
int res=1;
while(num >= 2 ) {
res += num;
num = num-2;
}
return res;
}
但是当你使用Tree,Hierarchy等时,递归是代码重用的最重要特性之一,