所以一直在为我过去的考试而学习,遇到了这个问题,问如果 num = 7,返回值是多少?将它插入 BlueJ 告诉我 16,func1 做了什么使它成为 16?声明的方法如何在方法中再次使用?我搜索但很难找到这个确切的例子,因为它只是正常使用方法。
谢谢,
public int func1(int num)
{
if ( num <= 2 ) return 1;
return func1(num – 2) + num;
}
所以一直在为我过去的考试而学习,遇到了这个问题,问如果 num = 7,返回值是多少?将它插入 BlueJ 告诉我 16,func1 做了什么使它成为 16?声明的方法如何在方法中再次使用?我搜索但很难找到这个确切的例子,因为它只是正常使用方法。
谢谢,
public int func1(int num)
{
if ( num <= 2 ) return 1;
return func1(num – 2) + num;
}
这是对您使用它的同一函数的递归调用。
因此,func1(num – 2)
将调用相同的函数 - public int func1(int num)
with num = num - 2
, untilnum >= 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
更新: - 概括了上面的递归,让你弄清楚它是如何工作的。
你可以通过: -递归 - 维基页面
这称为递归。理解它的最好方法是在调试器中观察它,并考虑调用序列将如何终止(即它为什么不无限期地调用自身)。
(对不起 - 因为这是家庭作业/考试相关,所以没有给你一个完整的答案)
好吧,这就是递归的全部意义。该方法被递归调用,直到满足某个退出条件。在您的情况下,退出条件是方法参数值达到 <= 2 的值
要理解递归,首先要理解递归。
在这里你可以找到一个很好的解释。
你想看的东西(特别是你的考试)叫做递归
该函数使用不同的参数值调用自身,直到满足内部标准。
声明的方法如何在方法中再次使用?
答:在称为递归的方法中调用相同的方法(计算机科学)
您可以不使用循环使用递归
public int func1(int num) {
int res=1;
while(num >= 2 ) {
res += num;
num = num-2;
}
return res;
}
但是,当您使用 Tree、Hierarchy 等时,递归是代码重用最重要的特性之一,