黑马程序员技术交流社区

标题: 递归法 [打印本页]

作者: vipzh    时间: 2012-12-1 22:41
标题: 递归法
怎么样用递归法求一个数的阶乘啊,求指教?
作者: 朝花夕拾    时间: 2012-12-1 23:03
public class DiGuiDemo {
        public static void main(String[] args) {
                // 求5的阶乘
                DiGuiDemo dgd = new DiGuiDemo();
                System.out.println(dgd.jc(5));
        }

        // 递归求阶乘
        /*
         * 当n等于1的时候,结果就是1. 当n不等于1的时候,结果是:n*(n-1)!
         */
        public int jc(int n) { //5 - 4 - 3 - 2 - 1
                if (n == 1) {
                        return 1;
                } else {
                        return n * jc(n - 1);
                        //5*jc(4)
                        //5*4*jc(3) 5*4*6
                        //5*4*3*jc(2) 5*4*3*2
                        //5*4*3*2*jc(1)   1
                }
        }
}
作者: 何伟    时间: 2012-12-2 00:39
本帖最后由 何伟 于 2012-12-2 00:57 编辑

public int jc(int x)//第x个数的阶乘
       {
       if (x >0)
       else if( x==1)
       return 1;
       else
       return x * jc(x - 1);
//jc(x-1)就是在调用自己,直到不满足if语句的条件,说白了就是函数调用,只不过调用的是自己而已。递归和循环语句一样都需要结束条件
       }
       下面是我找到的总结
递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现像.
  程序调用自身的编程技巧称为递归( recursion)。
注意:
  (1) 递归就是在过程或函数里调用自身;
  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
递归算法一般用于解决三类问题:
  (1)数据的定义是按递归定义的。(Fibonacci函数)
  (2)问题解法按递归算法实现。(回溯)
  (3)数据的结构形式是按递归定义的。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2