JAVA怎样理解递归( 三 )

//迭代调用int func1(int n){ int result=1; for(int i=1;i\u0026lt;=n;i++){ result*=i; } return result;}
//递归调用int func2(int n){ if(x==1){ return 1; } else { return n*(n-1); }}
现在你要在一堆乱糟糟的盒子(原始数据,注意盒子里面还有盒子就像套娃一样)中找出钥匙(shi),说白了迭代调用就是逐个把找出的盒子放在一起(这时候盒子里面的盒子已经被取出来了),然后返回循环的首地址处(迭代通常是通过循环实现的),这时候盒子的最深层次由于你已经取出了一些盒子已经被降低了,接着循环直到找到钥匙(shi);而递归调用则是逐个的对每一个套盒子抽取并检查(像洋葱一样一层一层的剥开直到最后一层),如果这个盒子包括盒子里面的所有盒子都没有钥匙(shi),就开始检查第二个(下一个)盒子,知道找到钥匙(shi)。结束。
简而言之,迭代和递归的区别就是:递归每次只检查一个盒子,而迭代则是每次检查一套盒子!

■网友
【JAVA怎样理解递归】 方法本身调用方法本身


推荐阅读