使用方法中声明的相同方法?

时间:2012-10-29 09:45:42

标签: java methods return-value

所以一直在研究我过去的考试并遇到这个问题,询问如果num = 7,返回值是多少?将它插入BlueJ告诉我16,func1做了什么让它成为16?如何在方法中再次使用声明的方法?我搜索但很难找到这个确切的例子,因为它只是通常使用方法。

谢谢,

public int func1(int num) 
{
  if ( num <= 2 ) return 1;
  return func1(num – 2) + num;
}

6 个答案:

答案 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等时,递归是代码重用的最重要特性之一,