有人可以用堆栈向我解释这个程序的工作吗?

时间:2014-10-03 05:27:31

标签: java function recursion stack

我一直非常热衷于接受递归,但我似乎误解了它

我在一本书中读过一个问题,我有点困惑,我不想把它弄得一团糟,我想要一些关于堆栈的可靠解释也是关于调用这些函数的

class rectest
{
int values[];

rectest(int i)
{
    values = new int[i]; 
}

 void printarray(int i)
  {
    if(i==0)
        return ; 
    else printarray(i-1);
    System.out.print(values[i-1]+" ");
  }
 }

public class recursion 
{
  public static void main(String args[])
   {
    rectest ob = new rectest(10);
    int i ; 
    for(i=0 ; i<10 ; i++)
        ob.values[i] = i ;
    ob.printarray(10);
   }
}

2 个答案:

答案 0 :(得分:1)

RECURSION 表示一次又一次地重复调用任何内容

  

这是学习如何的传统和重要计划之一   递归工作和?是递归和为什么   让我举一个计算因子的例子   他们的伪代码将是这样的

功能因子是:

input: integer n such that n >= 1
output: [n × (n-1) × (n-2) × … × 1]

    1. if n is >= 1, return [ n × factorial(n-1) ]
    2. otherwise, return 1

end factorial

现在发生的事情是它总是返回[n * factorial(n-1)],它一遍又一遍地调用自己

现在让我们考虑你的背景

 public class recursion 
    {
      public static void main(String args[])
       {
        rectest ob = new rectest(10);

//这里是初始化对象并调用其构造函数并初始化大小为10的数组

int i ; 
for(i=0 ; i<10 ; i++)
    ob.values[i] = i ;

//在这里,您将每个成员变量分配给某个值,例如位置0值[0] = 0

ob.printarray(10); //这里你正在打印你现在已经传递的十个值的值重要的事情发生在这里

}     } 现在看看printarray()方法 这里

void printarray(int i)
  {
    if(i==0)
        return ; 
    else printarray(i-1);
//printarray(i-1) here it calls the method itself so as to print all the values recursively 
    System.out.print(values[i-1]+" ");
  }

如果你有更多的查询请问

答案 1 :(得分:0)

如果你必须了解递归,你可以看看这个堆栈溢出问题。 What is recursion and when should I use it?

如果你想更好地理解java中递归的实现,这里是另一个堆栈溢出问题。How is recursion implemented in Java