递归法求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