A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vipzh 中级黑马   /  2012-12-1 22:41  /  1224 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么样用递归法求一个数的阶乘啊,求指教?

2 个回复

正序浏览
本帖最后由 何伟 于 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)数据的结构形式是按递归定义的。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马