所以一直在为我过去的考试学习,遇到这个问题,如果 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)
和 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
关于java - 使用方法中声明的相同方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13119118/