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

use*_*493 3 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;
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 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
Run Code Online (Sandbox Code Playgroud)

更新: - 推广上面的递归,让你弄清楚它是如何工作的.

你可以通过: - 递归 - 维基页面