递归法求5的阶乘

递归法求5的阶乘

递归定义:
* 递归:方法自己调用自己

 * 5!
 * 5 * 4 * 3 * 2 * 1
 * 5 * fun(4)(代表4!)
 *         4 * fun(3)(代表3!)
 *                 3 * fun(2)(代表2!)
 *                         2 * fun(1)(代表1!)
 * **递归的弊端**:不能调用次数过多,容易导致栈内存溢出(因为开始的时候只存放不弹栈)
* 
 * **递归的好处**:不用知道循环次数
 * 构造方法(给对象属性进行初始化的,无返回值连void都没有)是否可以递归调用?
 * 构造方法不能使用递归调用,因为构造方法不能手动调用,系统会自动调用的
 * 递归调用是否必须有返回值?
 * 不一定(可以有,也可以没有

具体代码:

//递归求5!
public class DiGui {
    public static void main(String[] args) {
        System.out.println ( fun ( 5 ) );
    }

    public static int fun(int num) {
        //递归
       /* if (num == 1) {
            return num;
        } else {
            num = num * fun ( num - 1 );
        }
        return num;
    */
       //for循环
        int result = 1;
        for (int i = 1; i <= 5; i++) {    //注意此处i=1,而不是等于0,否则结果也是0.因为是后++,所以i<=5,而不是4;i=1,而不是等于0
            result = result * i;
        }
        return result;
    }

}

结果120
发布了55 篇原创文章 · 获赞 5 · 访问量 4165

猜你喜欢

转载自blog.csdn.net/qq_43654669/article/details/100903794
今日推荐