似乎经常在邮件列表和在线讨论中出现的主题之一是获得计算机科学学位的优点(或缺乏优点)。 反对党似乎反复提出的一个论点是,他们已经进行了多年编码,并且从未使用过递归。
所以问题是:
什么是递归?
什么时候使用递归?
人们为什么不使用递归?
递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决。 在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。 另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n
public static void main(String[] args) {
int num = factorial(10);
System.out.println(num);
}
private static int factorial(int n){
if(n == 1) {
return 1;
}
return n * factorial(n - 1);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。